{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "<center>\n",
    "    <img src=\"./images/mlfasp.png\">\n",
    "</center>\n",
    "\n",
    "#### Prof. Dr. -Ing. Gerald Schuller <br> Jupyter Notebook: Renato Profeta\n",
    "\n",
    "[Applied Media Systems Group](https://www.tu-ilmenau.de/en/applied-media-systems-group/) <br>\n",
    "[Technische Universität Ilmenau](https://www.tu-ilmenau.de/)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "hide_input": true,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "# Recurrent Neural Networks"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "hide_input": true,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/hOdzeTOEG6g?rel=0\" frameborder=\"0\" allow=\"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%html\n",
    "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/hOdzeTOEG6g?rel=0\" frameborder=\"0\" allow=\"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "So far we saw networks that process the input in layers towards the output, but with no feedback path. \n",
    "\n",
    "Recurrent Neural Networks (RNN), compute an internal \"state\" from the input, which then becomes part of the input in the next time-step. This makes it similar to Infinite Impulse Response (IIR) linear filters, which have a feedback path via delay elements from their output back to their input, as depicted in the following picture:\n",
    "\n",
    "\n",
    "<center>\n",
    "    <br>\n",
    " <img src=\"./images/iir_filter.jpg\" width=\"700\" />\n",
    "    <br>\n",
    " </center>\n",
    " \n",
    "This is a generic IIR filter (from: Lecture \"Advanced Digital Signal Processing\", slides 7, https://www.tu-ilmenau.de/mt/lehrveranstaltungen/lehre-fuer-master-mt/adsp-digital-signal-procesing-2, or: Alan V. Oppenheim, Ronald W. Schafer, with John R. Buck: \"Discrete-Time Signal Processing\" )."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "hide_input": true,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/82aPiJ4gegM?rel=0\" frameborder=\"0\" allow=\"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%html\n",
    "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/82aPiJ4gegM?rel=0\" frameborder=\"0\" allow=\"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "hide_input": false,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "We first analyse this structure, and then we will try to implement it with a **Recurrent Neural Network.**\n",
    "\n",
    "The coefficients $b_i$ are the feed-forward coefficients, the $a_i$ are the feed-back coefficients. x[n] is the(audio) input signal, y[n] is the output signal of the filter. \n",
    "\n",
    "Because of the feedback path the IIR filter can start to oscillate and even become unstable.\n",
    "\n",
    "This happens if the poles of its transfer function in the z-domain are outside the unit-circle. But if the poles are just inside the unit circle, and close to it, this filter produces an impulse response of decaying oscillations or sinusoidal signals. \n",
    "\n",
    "As an audio signal, this can sound like a tone from a bell. In this way it can be used to generate a signal.\n",
    "\n",
    "The corresponding difference equation in the time domain is:\n",
    "\n",
    "$$\\large\n",
    "\\begin{equation}\n",
    "y[n]= \\sum _{m=0} ^L b[m] \\cdot x[n-m]+ \\sum _ {r=1} ^R a[r] \\cdot y(n-r)\n",
    "\\end{equation}$$    \n",
    "\n",
    "(See also: Oppenheim, Schafer: “Discrete Time Signal Processing”, Chapter 6 in Ed. 1989)\n",
    "\n",
    "The resulting transfer function in the z-domain is (see also the lecture above):\n",
    "\n",
    "$$ \\large\n",
    "H(z)=\\dfrac{Y(z)}  {X(z)}= \\dfrac{\\sum _ {m=0} ^L b(m)  \\cdot z^{-m}}{1-\\sum _ {r=1} ^ R a(r) \\cdot z^{-r}}\n",
    "$$\n",
    "\n",
    "For our test generative example we would like to have a decaying sinusoidal function as impulse response. \n",
    "\n",
    "We get this from a simple $2^{nd}$ order IIR filter, with $b_0=1$ (and 0 else, L=1), and R=2, meaning just 2 feedback delays and coefficients.\n",
    "\n",
    "$$\\large\n",
    "\\begin{equation}\n",
    "y[n]= x[n] + \\sum _{r=1}^2 a[r] \\cdot y[n-r]\n",
    "\\end{equation}$$\n",
    "\n",
    "and results in the transfer function in the z-domain:\n",
    "\n",
    "$$ \\large\n",
    "H(z)=\\dfrac{1}  {1-a_1\\cdot z^{-1}-a_2\\cdot z^{-2}}\n",
    "$$\n",
    "\n",
    "The denominator polynomial is of order 2, and hence has 2 zeros, which result in 2 poles, $p_0$, $p_1$ , of the transfer function H(z).\n",
    "\n",
    "Each pole causes an oscillation at a frequency which is given by its angle to the real axis, in radians (where $\\pi$ is 180 degrees), interpreted as normalized frequency (where $2\\pi$ corresponds to the sampling frequency). If we want a real valued oscillation, we need a **conjugate complex pole pair.**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "hide_input": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/XtxmlCao7Uw?rel=0\" frameborder=\"0\" allow=\"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%html\n",
    "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/XtxmlCao7Uw?rel=0\" frameborder=\"0\" allow=\"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "### **Example:** \n",
    "We want a decaying oscillation as an impulse response, with a frequency of 440 Hz (which is musical pitch A), at a sampling frequency of 8000 samples per second, and a decay factor of Q=0.995 per sample. The normalized frequency is then:\n",
    "\n",
    "$$\\large\n",
    "\\Omega=\\dfrac{2\\pi\\cdot 440 Hz}{8000 Hz}$$\n",
    "\n",
    "Then the conjugate complex pole pair is:\n",
    "\n",
    "$$\\large\n",
    "p_{0,1}=Q \\cdot \\exp\\left(\\pm j \\cdot Q\\right)$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1f3718f4518>]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "Q=0.995\n",
    "Omega= 2*np.pi*440/8000\n",
    "p0 = Q*np.exp(1j*Omega)\n",
    "p1 = Q*np.exp(-1j*Omega)\n",
    "# Plot Poles and Zeros\n",
    "from  matplotlib import patches\n",
    "plt.figure(figsize=(8,6))\n",
    "ax = plt.subplot(111)\n",
    "r = 1.5; plt.axis('scaled'); plt.axis([-r, r, -r, r])\n",
    "#ticks = [-1, 1]; plt.xticks(ticks); plt.yticks(ticks)\n",
    "# Unit Circle\n",
    "uc = patches.Circle((0,0), radius=1, fill=False, color='black', ls='dashed')\n",
    "ax.add_patch(uc)\n",
    "ax.spines['left'].set_position('center')\n",
    "ax.spines['bottom'].set_position('center')\n",
    "ax.spines['right'].set_visible(False)\n",
    "ax.spines['top'].set_visible(False)\n",
    "plt.xlabel('Re', horizontalalignment='right', x=1.0)\n",
    "plt.ylabel('Im',  y=1.0)\n",
    "plt.title('Complex z-Plane', loc='right')\n",
    "plt.grid()\n",
    "plt.plot(0,0,'ro')\n",
    "plt.plot(np.real(p0),np.imag(p0),'bx')\n",
    "plt.plot(np.real(p1),np.imag(p1),'bx')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "With these poles, the transfer function becomes:\n",
    "\n",
    "$$ \\large\n",
    "H(z)=\\dfrac{1}  {1-a_1\\cdot z^{-1}-a_2\\cdot z^{-2}} =\\dfrac{1}  {(1-p_0\\cdot z^{-1})(1-p_1\\cdot z^{-1})} \n",
    "$$\n",
    "\n",
    "which means:\n",
    "\n",
    "$$\\large\n",
    "a_1=(p_0+p_1) \\\\\n",
    "\\large\n",
    "a_2=p_0\\cdot p_1$$\n",
    "\n",
    "using the above pole pair (and with Eulers formula $e^{j\\cdot \\Omega}=\\cos (\\omega)+ j\\cdot \\sin(\\Omega)$ ) this becomes:\n",
    "\n",
    "$$\\large\n",
    "a_1=2Q\\cdot \\cos(\\Omega)\\\\\n",
    "\\large\n",
    "a_2=-Q^2$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "### Python Implementation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "In Python we first create an impulse, meaning a one (or 0.1 to keep the signal smaller), followed by as many zeros as we would like to produce the impulse response. Then we use `scipy.signal.lfilter` to generate the impulse response. \n",
    "\n",
    "There we need to observe that `lfilter` expects the \"a\" coefficients (here \"k\" coefficients) with opposite sign."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "hide_input": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/mzQ5Q_EQgJ0?rel=0\" frameborder=\"0\" allow=\"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%html\n",
    "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/mzQ5Q_EQgJ0?rel=0\" frameborder=\"0\" allow=\"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [],
   "source": [
    "from scipy import signal as sig\n",
    "Fs=8000\n",
    "seq_len=Fs*2\n",
    "omega=2*np.pi*440.0 /Fs\n",
    "k1=2*Q*np.cos(omega)\n",
    "k2=-pow(Q,2);\n",
    "ximp=np.zeros(seq_len) #make impulse with a desired sequence length\n",
    "ximp[0]=0.1 #impulse at the beginning\n",
    "filtered=sig.lfilter([1], np.array([1, -k1,-k2]), ximp)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "It then plays back the resulting impulse response to the audio output:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "                <audio  controls=\"controls\" >\n",
       "                    <source src=\"data:audio/wav;base64,UklGRiR9AABXQVZFZm10IBAAAAABAAEAQB8AAIA+AAACABAAZGF0YQB9AADJLNtTq3Dvf/9//nDYVP4u/QPy2O2yW5aBhhqFLpINrIrPYfi0IadG7GJEc+J1m2rkUqox7ApI42u/gqPDkgqPpZhRrmLNGfIUGNo6WlZqZyRsGGRZUFgzlhA77I/Kg680npSYLp8csSTMAu3HD1kw50phXM9ijV1WTS40IxXr83PUbLrXqLChtaVQtK7L+OisCAsnhEAlUu5ZDlf3SU00sxh4+jHdTMSuslaqKKzTt9/L2eWlAtgeIjexSIVRq1BVRtMzZxsAAN/kNM3Au4Gyd7KOu5vMieOW/agXsC7/P5lJckqGQtsyWx2eBJbrNNUUxC26l7hsv8rN6+Fj+WURHycHOCxCbkScPnsxqR5sCGrxWtyxy1vBfr5ew1TP5uD09foLXyDCMD47pj6mOsovah+BC3L2t+Kh0grIJcRVxyfRZOAz81EHYRomKs00ITmyNtktsh/0Db/6Wujr2D7OhslEyzLTUeAK8VkDFhUqJNYu5DPKMrkrlB/XD2b+Ue2b3vjTns4iz2XVm+Bn7wAAbxDFHlgp8i74LnYpIh8+EXYBrPG44zzZa9Pn0rTXMuE47jT9XgztGUwkTCpCKx4nax45EgIEd/VN6BDe6teM1hPaB+Jt7eb61giYFbAf8yWuJ7okfB3XEhYGv/hk7HfiHdwN2nncDeP57Aj5ygW9EXwb5iFCJFQiYRwlE8EHkfsF8HjmBOBl3d7eOuTN7I33LgNTDqwXJB4AIfIfJBsxExAJ+f068xjqoeOR4DzhhOXf7Gj2+ABRCzsUrBrqHZodzxkEEw4KAAAM9l3t9eaQ443j4uYk7Y71Hf+uCCIRexcCG1EbaRipEsUKsQGC+EzwA+ph5szlTuiT7fb0k/1iBlsOjxRIGBwZ+RYoEkALFwOm+uvyzuwD6fbnwOkk7pf0UPxlBOEL5BG9Ff0WhRWJEYcLOAR//EH1Wu936wnqNevQ7mf0TvuvAq4Jdw9gE/cUEhTTEKELHgUT/lP3qfG+7QPspuyP72D0g/o6Ab0HRQ0wEQoToxILEJYL0AVq/yX5v/PY7+HtEu5e8Hv06fkAAAcGSgsrDzoRPBE3D2wLUwaJAL76oPXH8aTvdO838bL0evn6/okEgwlSDYUP3w9aDikLsAZ4ASL8TveM80vxyvAV8gH1MPkh/j4D7AegC+0Njw56DdEK6gY7Alf9zvgq9dXyE/L38mH1Bfly/R8CggYWCnAMTg2YDGkKBgfYAmD+I/qi9kT0TfPY88/19fjm/CoBQQWwCA8LHAy5C/UJCwdTA0L/UPv295f1d/S29Ej2+/h7/FsAJwRsB8kJ+grcCngJ+gawAwAAWfwp+dD2kfWQ9cn2Ffkr/K3/LwNJBp4I6QkGCvUI2Qb0A58AQf09+u/3mfZj9k73Pfnz+xz/VwJEBYsH6Qg2CW4IqQYhBCIBCv40+/X4kfcu99b3c/nQ+6b+nAFcBJAG+gdvCOUHbwY6BIwBt/4P/OT5d/jx91/4svm/+0f+/ACNA60FHAexB10HLAZEBOEBS//R/L36Tfmr+Of4+Pm8+/39cwDWAt4ETgb8BtYG4wVABCICyf98/YH7E/pa+Wz5RPrG+8T9AAA2AiQEkQVSBlMGlQUxBFICMgAS/jL8yPoA+u75k/rb+5v9oP+qAX0D4wSyBdMFRAUYBHQCigCV/tD8bvub+mz65fr3+4D9Uf8wAegCRAQcBVcF8gT4A4kC0QAG/1z9Bvwr++T6OPsb/HD9EP/HAGMCswOQBOEEnwTSA5QCCwFo/9r9kPyy+1f7ivtD/Gv93f5tAO0BMAMPBHEETQSnA5UCOAG7/0j+Df0u/MX73Ptv/G39tv4hAIYBuQKXAwcE/AN5A48CWgEAAKn+fv2h/Cz8LPyf/Hb9mP7i/ysBTgIpA6MDrQNJA4MCcwE6AP7+4/0K/Y38efzQ/IX9hP6t/9wA7gHEAkUDYQMYA3ECgwFqAEj/Pv5r/ej8xPwB/Zn9d/6B/5cAmQFoAu0CGAPlAlwCjQGRAIj/jv7D/T39C/00/bD9cf5f/1wATQEVApsC0gKzAkQCkAGwAL7/1f4S/ov9T/1l/cr9cP5D/yoACgHJAVACkAKCAikCjwHIAOz/FP9a/tP9kP2W/eb9c/4v/wAAzwCFAQsCUQJSAgwCiQHaABIAS/+b/hb+zf3G/QP+e/4g/93/nABHAcsBFwIjAu4BgAHmADIAe//V/lP+Bf70/SH+hf4W/8D/bwARAZAB4AH1AdABdAHuAE0Apf8I/4v+O/4g/j/+kv4Q/6j/SQDgAFsBrAHKAbIBZgHyAGIAyP82/77+bP5L/l3+of4O/5b/KAC1ACsBfQGhAZQBVwHyAHIA5/9f/+v+mv5z/nv+sf4P/4f/DACPAP8AUQF6AXYBRgHwAH8AAACD/xX/xP6Z/pn+w/4S/3z/9f9tANgAKQFVAVkBNAHsAIgAFQCi/zr/6v68/rX+1f4X/3X/4v9QALUABAEzAT0BIgHlAI4AJwC9/1v/Dv/e/tD+5/4f/3D/0v83AJYA4gATASIBEAHdAJEANQDU/3n/Lv/9/uv++f4n/27/xf8hAHoAwwD1AAkB/QDUAJMAQADo/5P/S/8a/wT/DP8x/23/u/8PAGEApwDZAPAA6wDKAJIASQD5/6r/Zf80/xv/Hv87/2//s/8AAEwAjgC/ANkA2gDAAJAAUAAGAL7/ff9N/zL/L/9F/3H/rv/0/zkAeACoAMQAyAC1AI0AVAASAND/kv9j/0b/QP9Q/3X/qv/p/ykAZACTALAAuACqAIgAVwAcAN//pf93/1r/UP9c/3r/qP/g/xoAUgB/AJ0AqACfAIMAWAAkAOz/tv+K/2z/YP9n/4D/p//Z/w4AQgBtAIsAmQCUAH0AWQAqAPf/xf+b/33/b/9y/4b/qP/U/wQANABdAHsAigCJAHcAWAAuAAAA0v+q/4z/fP98/4z/qf/Q//z/KABPAG0AfQB+AHEAVgAyAAcA3v+4/5r/iv+H/5L/q//N//X/HQBCAF8AcAB0AGoAVAA0AA4A6P/E/6f/lv+R/5n/rv/M/+//FAA3AFMAZABqAGMAUQA1ABMA8P/P/7P/of+b/6D/sf/L/+v/DAAsAEcAWQBhAF0ATgA1ABcA+P/Y/77/rP+k/6f/tP/L/+f/BQAjAD0ATwBYAFYASgA1ABoA/v/h/8j/tf+s/63/uP/L/+T/AAAbADQARgBPAFAARgA1AB0AAgDo/9D/vv+1/7T/vP/M/+L//P8VACwAPQBIAEkAQgAzAB8ABgDv/9j/x/+8/7r/wP/N/+H/+P8PACQANQBAAEMAPgAyACAACgD0/9//zv/D/8D/xP/P/+D/9f8JAB4ALgA5AD0AOgAwACAADQD5/+X/1f/K/8b/yP/R/+D/8v8FABgAKAAzADgANgAuACAADwD9/+v/2//Q/8v/zP/T/+D/8P8BABMAIgAtADIAMgArACAAEQAAAPD/4f/W/9D/0P/W/+D/7////w4AHQAoAC4ALgApAB8AEgACAPT/5v/b/9X/1P/Y/+H/7v/8/woAGAAjACkAKgAnAB4AEwAFAPf/6v/g/9n/2P/b/+L/7f/6/wcAFAAeACUAJwAkAB0AEwAHAPv/7v/k/97/2//d/+P/7f/4/wQAEAAaACEAIwAiABwAEwAIAP3/8v/o/+H/3v/g/+T/7f/3/wIADQAWAB0AIAAfABsAEwAJAP//9f/s/+X/4v/i/+b/7f/2/wAACgATABkAHQAdABkAEwAKAAAA+P/v/+j/5f/k/+f/7f/1////BwAQABYAGgAbABgAEwALAAIA+v/y/+v/5//n/+n/7v/1//3/BQANABMAFwAYABYAEgALAAMA/P/0/+7/6v/p/+r/7v/1//z/AwALABEAFQAWABUAEQALAAQA/v/3//H/7f/r/+z/7//0//v/AQAIAA4AEgAUABMAEAALAAUA///5//P/7//t/+3/8P/1//v/AAAHAAwAEAASABIAEAALAAYAAAD6//X/8f/v/+//8f/1//r/AAAFAAoADgAQABEADwALAAYAAQD8//f/8//w//D/8v/1//r///8DAAgADAAPAA8ADgALAAcAAQD9//j/9f/y//H/8//1//n//v8CAAcACwANAA4ADQAKAAcAAgD+//r/9v/0//P/9P/2//n//v8BAAYACQAMAA0ADAAKAAcAAwD///v/+P/1//T/9P/2//n//f8AAAQACAAKAAsACwAKAAcAAwAAAPz/+f/2//X/9f/3//n//f8AAAMABwAJAAoACgAJAAcAAwAAAP3/+v/4//b/9v/3//n//P8AAAIABQAIAAkACQAIAAYABAAAAP7/+//5//f/9//4//r//P///wIABAAHAAgACQAIAAYABAABAP///P/6//j/+P/4//r//P///wEABAAGAAcACAAHAAYABAABAP///f/7//n/+f/5//r//P///wAAAwAFAAYABwAHAAYABAACAAAA/v/7//r/+f/5//r//P/+/wAAAgAEAAYABgAGAAUABAACAAAA/v/8//v/+v/6//v//P/+/wAAAQADAAUABgAGAAUABAACAAAA///9//v/+//6//v//P/+/wAAAQADAAQABQAFAAUABAACAAAA///9//z/+//7//v//P/+/wAAAQACAAQABAAFAAQABAACAAAAAAD+//3//P/7//z//f/+////AAACAAMABAAEAAQAAwACAAEAAAD///3//P/8//z//f/+////AAABAAMAAwAEAAQAAwACAAEAAAD///7//f/8//z//f/+////AAABAAIAAwADAAMAAwACAAEAAAD///7//f/9//3//f/+////AAABAAIAAwADAAMAAwACAAEAAAAAAP///v/9//3//f/+////AAAAAAEAAgADAAMAAwACAAEAAAAAAP///v/9//3//v/+////AAAAAAEAAgACAAMAAgACAAEAAAAAAP///v/+//7//v/+////AAAAAAEAAQACAAIAAgACAAEAAAAAAP/////+//7//v/+////AAAAAAAAAQACAAIAAgACAAEAAAAAAAAA///+//7//v/+////AAAAAAAAAQABAAIAAgACAAEAAAAAAAAA//////7//v//////AAAAAAAAAQABAAIAAgABAAEAAAAAAAAA/////////v//////AAAAAAAAAAABAAEAAQABAAEAAAAAAAAAAAD/////////////AAAAAAAAAAABAAEAAQABAAEAAAAAAAAAAAD/////////////AAAAAAAAAAABAAEAAQABAAEAAAAAAAAAAAD/////////////AAAAAAAAAAAAAAEAAQABAAEAAAAAAAAAAAAAAP//////////AAAAAAAAAAAAAAEAAQABAAEAAAAAAAAAAAAAAP//////////AAAAAAAAAAAAAAAAAQABAAEAAAAAAAAAAAAAAAAA////////AAAAAAAAAAAAAAAAAQABAAEAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\" type=\"audio/wav\" />\n",
       "                    Your browser does not support the audio element.\n",
       "                </audio>\n",
       "              "
      ],
      "text/plain": [
       "<IPython.lib.display.Audio object>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import IPython.display as ipd\n",
    "ipd.Audio(filtered, rate=Fs)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "Observe that it indeed sounds like a small bell or a Xylophone."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Implementation using a Recurrent Neural Network (RNN)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "hide_input": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/d2cfkY4QC0Y?rel=0\" frameborder=\"0\" allow=\"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%html\n",
    "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/d2cfkY4QC0Y?rel=0\" frameborder=\"0\" allow=\"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "In IIR filters we have the delay chain of delay elements $z^{−1}$ , which delay each sample by one sample interval. \n",
    "\n",
    "In an RNN instead we have the \"hidden states\" *h*, which is a vector or array which is updated after each sample interval according  to the matrix equation:\n",
    "\n",
    "$$\\large\n",
    "h_t=tanh(W_{ih}\\cdot  x_t+b_{ih}+W_{hh}\\cdot h_{t−1}+b_{hh})$$\n",
    "\n",
    "where $x_t$ is our input signal (here the impulse), and *t* is our integer valued time index (which was *n* for the IIR filter). The *W* are weight matrices, and the *b* are the biases, which we don't need here.\n",
    "\n",
    "Observe that *x* and *h* are column vectors or arrays.\n",
    "\n",
    "Also, there is always a non-linearity. Default is the `tanh function`, an alternative is the `relu` function."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "hide_input": true,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe width=\"900\" height=\"400\" src=\"https://pytorch.org/docs/stable/generated/torch.nn.RNN.html#torch.nn.RNN\"></iframe>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%html\n",
    "<iframe width=\"900\" height=\"400\" src=\"https://pytorch.org/docs/stable/generated/torch.nn.RNN.html#torch.nn.RNN\"></iframe>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "hide_input": false,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "Since our IIR filter does not have a non-linearity, we choose the *tanh* function and keep the signal small,  such that it stays in its more linear region.\n",
    "\n",
    "The hidden state *h* also represents the output of the RNN.\n",
    "\n",
    "To make it function like our *IIR filter*, we use the hidden states as the delay line in our IIR filter, which means the hidden states are equal to the filter output and its two delayed versions:\n",
    "\n",
    "$$\\large\n",
    "h_t[i]=y[t−i] \\text{ for i=0,1,2}$$\n",
    "\n",
    "hence i=0 denotes the most recent sample.\n",
    "\n",
    "Observe the notation $h_t[i]$: this is an array or (column) vector with 3 entries, indexed with *i* , at time *t* .\n",
    "\n",
    "From the time domain difference eq. (2) we know that:\n",
    "\n",
    "$$\\large\n",
    "h_t[0]=y[t]=x[t]+a_1 \\cdot y[t−1] + a_2 \\cdot y[t−2]$$\n",
    "\n",
    "which equals:\n",
    "\n",
    "$$\\large\n",
    "h_t[0]=x[t]+a_1 \\cdot h_{t−1} [0]+a_2 \\cdot h_{t−1} [1] $$\n",
    "\n",
    "Then we just need to shift the remaining hidden states by one time step down such that they become the delay line:\n",
    "\n",
    "$$\\large\n",
    "h_t[1]=h_{t−1}[0] \\\\\n",
    "\\large\n",
    "h_t [2]=h_{t−1}[1] $$\n",
    "\n",
    "These equations now give us the necessary weight matrices $W_{hh}$ and $W_{ih}$ , in our simplified RNN update equation:\n",
    "\n",
    "$$\\large\n",
    "h_t=W_{ih} \\cdot x_t+W_{hh} \\cdot h_{t−1}$$\n",
    "\n",
    "where we neglected the non-linear activation function and set the biases to zero."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "hide_input": false,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "We get:\n",
    "\n",
    "$$\\large\n",
    "W_{hh}=\n",
    "\\begin{bmatrix}\n",
    "a_1 & a_2 & 0\\\\\n",
    "1 & 0 & 0 \\\\\n",
    "0 & 1 & 0\n",
    "\\end{bmatrix}$$\n",
    "\n",
    "We set $x_t$ as the single sample x[t] (instead of a column vector, since we don't need past *x* values because we chose no FIR part with L=0 in eq. (1)), hence $W_{ih}$ just becomes a column weight vector which has a 1 in the position for $h_t[0]$:\n",
    "\n",
    "$$\\large\n",
    "W_{ih}=\n",
    "\\begin{bmatrix}\n",
    " 1\\\\\n",
    "0 \\\\\n",
    "0\n",
    "\\end{bmatrix}$$\n",
    "\n",
    "This is now our RNN working as our IIR filter!\n",
    "\n",
    "The output of our RNN IIR filter is $h_t[0]$ , which we obtain by adding a linear output layer, which has a factor of 1 for this element, and zeros for the other elements."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "hide_input": false,
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "### Python Pytorch Implementation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "hide_input": false,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "We use Pytorch to implement a Recurrent Neural Network (RNN) as a class:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "hide_input": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/AIshvG00PMI?rel=0\" frameborder=\"0\" allow=\"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%html\n",
    "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/AIshvG00PMI?rel=0\" frameborder=\"0\" allow=\"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "hide_input": false,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "device= cpu\n"
     ]
    }
   ],
   "source": [
    "import torch\n",
    "import torch.nn as nn\n",
    "# Device configuration\n",
    "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n",
    "print(\"device=\", device)  \n",
    "\n",
    "infeatures= 1 # samples per input time step\n",
    "hiddensize= 3 #number of hidden states, the memory elements\n",
    "outputs=1 #1 samples per output time step\n",
    "numlayers=1 #number of layers of the network\n",
    "batch=1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "hide_input": true,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [],
   "source": [
    "class RNNnet(nn.Module):\n",
    "    def __init__(self, infeatures, hiddensize, outputs):\n",
    "        super(RNNnet, self).__init__()\n",
    "        # Define the model.\n",
    "        self.rnn = nn.RNN(input_size=infeatures, hidden_size=hiddensize, num_layers=numlayers, bias=False)\n",
    "        #forward layer for output\n",
    "        self.fo = nn.Linear(hiddensize, outputs, bias=False)\n",
    "        \n",
    "    def forward(self, x):\n",
    "        h_0 = torch.zeros(numlayers, batch, hiddensize).to(device)\n",
    "        out, hn = self.rnn(x, h_0)\n",
    "        #Output is simply the hidden state of the last layer (if more than 1 layer)\n",
    "        out = self.fo(out) #e.g. used to just keep first output\n",
    "        return out"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "To convert our audio signal to the Pytorch format for the RNN, we define the function:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [],
   "source": [
    "def signal2pytorch(x):\n",
    "    #Function to convert a signal vector x, like a mono audio signal, into a 3-d Tensor that Pytorch expects,\n",
    "    #https://pytorch.org/docs/stable/nn.html\n",
    "    #Argument x: a 1-d signal as numpy array\n",
    "    #output: 3-d Pytorch Tensor.\n",
    "    #for RNN Input: (siglen,batch,features)\n",
    "    X = np.expand_dims(x, axis=-1) #add batch dimension (here only 1 )\n",
    "    X = np.expand_dims(X, axis=-1) #add features dimension (here only 1 )\n",
    "    X=torch.from_numpy(X)\n",
    "    X=X.type(torch.Tensor)\n",
    "    return X"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "Next we compute the coefficients for our IIR filter:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "Fs=8000\n",
    "omega=2*np.pi*440.0 /Fs; #normalized frequency\n",
    "Q=0.995 #determines speed of decay, the closer to 1 the longer\n",
    "k1=2*Q*np.cos(omega)\n",
    "k2=-pow(Q,2);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "Then we compute its impulse response and play it to the speaker:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The impulse response sound from the I.I.R. filter\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "                <audio  controls=\"controls\" >\n",
       "                    <source src=\"data:audio/wav;base64,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GAAjACkAKgAnAB4AEwAFAPf/6v/g/9n/2P/b/+L/7f/6/wcAFAAeACUAJwAkAB0AEwAHAPv/7v/k/97/2//d/+P/7f/4/wQAEAAaACEAIwAiABwAEwAIAP3/8v/o/+H/3v/g/+T/7f/3/wIADQAWAB0AIAAfABsAEwAJAP//9f/s/+X/4v/i/+b/7f/2/wAACgATABkAHQAdABkAEwAKAAAA+P/v/+j/5f/k/+f/7f/1////BwAQABYAGgAbABgAEwALAAIA+v/y/+v/5//n/+n/7v/1//3/BQANABMAFwAYABYAEgALAAMA/P/0/+7/6v/p/+r/7v/1//z/AwALABEAFQAWABUAEQALAAQA/v/3//H/7f/r/+z/7//0//v/AQAIAA4AEgAUABMAEAALAAUA///5//P/7//t/+3/8P/1//v/AAAHAAwAEAASABIAEAALAAYAAAD6//X/8f/v/+//8f/1//r/AAAFAAoADgAQABEADwALAAYAAQD8//f/8//w//D/8v/1//r///8DAAgADAAPAA8ADgALAAcAAQD9//j/9f/y//H/8//1//n//v8CAAcACwANAA4ADQAKAAcAAgD+//r/9v/0//P/9P/2//n//v8BAAYACQAMAA0ADAAKAAcAAwD///v/+P/1//T/9P/2//n//f8AAAQACAAKAAsACwAKAAcAAwAAAPz/+f/2//X/9f/3//n//f8AAAMABwAJAAoACgAJAAcAAwAAAP3/+v/4//b/9v/3//n//P8AAAIABQAIAAkACQAIAAYABAAAAP7/+//5//f/9//4//r//P///wIABAAHAAgACQAIAAYABAABAP///P/6//j/+P/4//r//P///wEABAAGAAcACAAHAAYABAABAP///f/7//n/+f/5//r//P///wAAAwAFAAYABwAHAAYABAACAAAA/v/7//r/+f/5//r//P/+/wAAAgAEAAYABgAGAAUABAACAAAA/v/8//v/+v/6//v//P/+/wAAAQADAAUABgAGAAUABAACAAAA///9//v/+//6//v//P/+/wAAAQADAAQABQAFAAUABAACAAAA///9//z/+//7//v//P/+/wAAAQACAAQABAAFAAQABAACAAAAAAD+//3//P/7//z//f/+////AAACAAMABAAEAAQAAwACAAEAAAD///3//P/8//z//f/+////AAABAAMAAwAEAAQAAwACAAEAAAD///7//f/8//z//f/+////AAABAAIAAwADAAMAAwACAAEAAAD///7//f/9//3//f/+////AAABAAIAAwADAAMAAwACAAEAAAAAAP///v/9//3//f/+////AAAAAAEAAgADAAMAAwACAAEAAAAAAP///v/9//3//v/+////AAAAAAEAAgACAAMAAgACAAEAAAAAAP///v/+//7//v/+////AAAAAAEAAQACAAIAAgACAAEAAAAAAP/////+//7//v/+////AAAAAAAAAQACAAIAAgACAAEAAAAAAAAA///+//7//v/+////AAAAAAAAAQABAAIAAgACAAEAAAAAAAAA//////7//v//////AAAAAAAAAQABAAIAAgABAAEAAAAAAAAA/////////v//////AAAAAAAAAAABAAEAAQABAAEAAAAAAAAAAAD/////////////AAAAAAAAAAABAAEAAQABAAEAAAAAAAAAAAD/////////////AAAAAAAAAAABAAEAAQABAAEAAAAAAAAAAAD/////////////AAAAAAAAAAAAAAEAAQABAAEAAAAAAAAAAAAAAP//////////AAAAAAAAAAAAAAEAAQABAAEAAAAAAAAAAAAAAP//////////AAAAAAAAAAAAAAAAAQABAAEAAAAAAAAAAAAAAAAA////////AAAAAAAAAAAAAAAAAQABAAEAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\" type=\"audio/wav\" />\n",
       "                    Your browser does not support the audio element.\n",
       "                </audio>\n",
       "              "
      ],
      "text/plain": [
       "<IPython.lib.display.Audio object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from scipy import signal as sig\n",
    "import IPython.display as ipd\n",
    "seq_len=Fs*2\n",
    "ximp=np.zeros(seq_len) #make impulse with a desired sequence length\n",
    "ximp[0]=0.1 #impulse at the beginning\n",
    "filtered=sig.lfilter([1], np.array([1, -k1,-k2]), ximp)\n",
    "print(\"The impulse response sound from the I.I.R. filter\")\n",
    "display(ipd.Audio(filtered, rate= Fs))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [],
   "source": [
    "\"\"\"\n",
    "RNN as IIR Filter: hidden states h as delay chain \n",
    "Weights for updating h for shifting the delay line:\n",
    "s=array([[0,0,0],[1,0,0],[0,1,0]]) \n",
    "In [4]: s      \n",
    "array([[0, 0, 0],\n",
    "       [1, 0, 0],\n",
    "       [0, 1, 0]])\n",
    "\n",
    "Application of IIR coefficients a(1)=2, a(2)=3:\n",
    "a=array([[1,2,3],[0,1,0],[0,0,1]])                                      \n",
    "\n",
    "In [2]: a \n",
    "Out[2]: \n",
    "array([[1, 2, 3],\n",
    "       [0, 1, 0],\n",
    "       [0, 0, 1]])\n",
    "First apply shift operator s and then coefficents, h multiplied from right:\n",
    "dot(a,s)\n",
    "array([[2, 3, 0],\n",
    "       [1, 0, 0],\n",
    "       [0, 1, 0]])\n",
    "this is w_hh.\n",
    "\"\"\";"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "hide_input": false,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "Now we can create our neural network model and assign our desired weights, such that it acts like the IIR filter:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {
    "hide_input": false,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "weights = OrderedDict([('rnn.weight_ih_l0', tensor([[1.],\n",
      "        [0.],\n",
      "        [0.]])), ('rnn.weight_hh_l0', tensor([[ 1.8724, -0.9900,  0.0000],\n",
      "        [ 1.0000,  0.0000,  0.0000],\n",
      "        [ 0.0000,  1.0000,  0.0000]])), ('fo.weight', tensor([[1., 0., 0.]]))])\n"
     ]
    }
   ],
   "source": [
    "rnn = RNNnet(infeatures, hiddensize, outputs)\n",
    "#Shifted diagonal matrix and IIR Filter coefficients:\n",
    "rnn.state_dict()['rnn.weight_hh_l0'].data.copy_(torch.diag(torch.ones(hiddensize-1),diagonal=-1))\n",
    "rnn.state_dict()['rnn.weight_hh_l0'][0,:].data.copy_(torch.tensor([ k1, k2,0.0]))\n",
    "#Vector with a \"1\" for input x:\n",
    "rnn.state_dict()['rnn.weight_ih_l0'].data.copy_(torch.zeros((hiddensize,1)))\n",
    "rnn.state_dict()['rnn.weight_ih_l0'][0,0].data.copy_(torch.tensor(1.0))\n",
    "#Weight for linear output layer to select h[0]:\n",
    "rnn.state_dict()['fo.weight'][0,:].data.copy_(torch.tensor([1.0,0.0 ,0.0]))\n",
    "ww = rnn.state_dict() #read obtained weights\n",
    "print(\"weights =\", ww)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "scrolled": true,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "With this print function you should check at runtime if the weights of the model now look like you would expect. If they look okay we have now a functional neural network which should work similar to an IIR filter. We try it by converting our impulse input to Pytorch, and then feed it to our neural network:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [],
   "source": [
    "#the input, converted from the Numpy array:\n",
    "inputsig=signal2pytorch(ximp)\n",
    "#Run Recurrent Neural Network:\n",
    "outsig= rnn(inputsig)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "The output of the RNN is then converted back to numpy, played back to the speaker for listening comparison, and ploted together with the output of the IIR filter for visual comparison:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The sound from the recurrent neural network\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "                <audio  controls=\"controls\" >\n",
       "                    <source src=\"data:audio/wav;base64,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CwAQABMAEwASAA4ACAACAPz/9v/x/+7/7v/v//L/+P/+/wMACQAOABEAEgAQAA0ACQADAP7/+P/z//D/7//w//P/9//9/wIABwAMAA8AEAAPAA0ACQAEAP//+v/1//L/8f/x//T/9//8/wAABgAKAA0ADgAOAAwACQAEAAAA+//3//T/8v/y//T/9//8/wAABAAIAAsADQANAAsACAAEAAAA/P/4//X/9P/z//X/+P/7/wAAAwAHAAoADAAMAAsACAAFAAEA/f/6//f/9f/1//b/+P/7////AgAGAAkACgALAAoACAAFAAEA/v/7//j/9v/2//b/+P/7////AQAFAAcACQAKAAkACAAFAAIA///8//n/9//3//f/+P/7//7/AAAEAAYACAAJAAkABwAFAAIAAAD9//r/+P/3//j/+f/7//7/AAADAAUABwAIAAgABwAFAAIAAAD+//v/+f/4//j/+f/7//3/AAACAAQABgAHAAcABwAFAAMAAAD+//z/+v/5//n/+v/7//3/AAABAAQABQAHAAcABgAFAAMAAAD///3/+//6//r/+v/7//3///8BAAMABQAGAAYABgAFAAMAAQD///3//P/7//r/+v/8//3///8AAAIABAAFAAYABQAEAAMAAQAAAP7//P/7//v/+//8//3///8AAAIAAwAEAAUABQAEAAMAAQAAAP///f/8//v/+//8//3///8AAAEAAwAEAAQABAAEAAMAAQAAAP///f/8//z//P/8//3///8AAAEAAgADAAQABAAEAAMAAQAAAP///v/9//z//P/8//3///8AAAAAAgADAAQABAADAAMAAQAAAAAA/v/9//3//P/9//3//v8AAAAAAQACAAMAAwADAAMAAgAAAAAA///+//3//f/9//7//v8AAAAAAQACAAMAAwADAAIAAgAAAAAA///+//3//f/9//7//v///wAAAQACAAIAAwADAAIAAgABAAAA//////7//f/9//7//////wAAAAABAAIAAgACAAIAAQABAAAAAAD///7//v/+//7//////wAAAAABAAIAAgACAAIAAQABAAAAAAD///7//v/+//7//////wAAAAABAAEAAgACAAIAAQABAAAAAAD//////v/+//7//////wAAAAABAAEAAgACAAIAAQABAAAAAAAAAP/////+//7//////wAAAAAAAAEAAQACAAEAAQABAAAAAAAAAP///////////////wAAAAAAAAEAAQABAAEAAQABAAAAAAAAAP///////////////wAAAAAAAAEAAQABAAEAAQABAAAAAAAAAAAA/////////////wAAAAAAAAAAAQABAAEAAQABAAAAAAAAAAAA/////////////wAAAAAAAAAAAQABAAEAAQABAAAAAAAAAAAAAAD//////////wAAAAAAAAAAAAABAAEAAQABAAAAAAAAAAAAAAD//////////wAAAAAAAAAAAAABAAEAAQABAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAAEAAQAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\" type=\"audio/wav\" />\n",
       "                    Your browser does not support the audio element.\n",
       "                </audio>\n",
       "              "
      ],
      "text/plain": [
       "<IPython.lib.display.Audio object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "outsig=outsig.detach()\n",
    "outsig=np.array(outsig) #turn into numpy array\n",
    "outsig=outsig[:,0,0]\n",
    "print(\"The sound from the recurrent neural network\")\n",
    "display(ipd.Audio(outsig, rate=Fs))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {
    "hide_input": false,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmkAAAHwCAYAAAD98PjEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOydd3wc1bn3v2d7kSzJci/YxhiDq0wHVwJcINRcSCFwAyGEQEICvOHeFC4h4ebmhUtCSYA4yaXmTSCUkAIkEIqA0DGYZsAdS+62itVWbc/7x5lZrVa7q7U0Myvbz/fz0Wd2ys5zZnak/en3nPMcpbVGEARBEARBGFr4it0AQRAEQRAEoS8i0gRBEARBEIYgItIEQRAEQRCGICLSBEEQBEEQhiAi0gRBEARBEIYgItIEQRAEQRCGICLSBCEPSqkLlFL/LHY79lSU4W6lVL1S6vVitwdAKXWPUurHxW6Hmyilliilat06fl9H7pfgFSLShD0CpdR6pdTxxW6HsNssAE4AJmitj/A6uNsiWylVrZS6yHrd64vb2pdQSjUrpXYopf6olBrrVlt2B6WUVkodUOx2FAu3hbp1f1usz36jUuompZQ/bb/9bExM23a8Ump92vp6pdRWpVQ8bdtFSqlqt9otDD1EpAlCkVFKBYrdBheZBKzXWrdk27mXXzvAZVrrEuAAoAT4aZHbI3jHXOuzXwx8HrgwY38LcE0/5wgAl7vQNmEPQUSasMdhuSMvKaVuVko1KKXWKqWOsbbXKKW2KaXOTzv+HqXUUqXUP5RSTUqp55VSk6x9k63/egNpx6fckYy4yoq5TSnVqJR6Vyk1y9oXVkr9VCm1wfrvd6lSKlpA++uAH1rbL1RKfWilBp9Ma2O+uDmvzdp/jFLqDet9byiljsm4zv+y2tKklHpKKTXC2hdRSv0/pdRO6x6/oZQabe0rU0rdqZTabLkEP053CdLO/xXgf4GjLUfhR7bbpJT6jlJqC3C3dexXlVKrlVJ1Sqm/KKXGpZ1HK6W+rpRaZbXzv5RSU5VSryildimlHlRKhbLEPxhYmha/IW13hVLqcet8rymlpqa97yDrftYppT5WSn0u2+e4O2itG4A/AVW5jlFKnaKUetu6phql1A/T9tnP6fnWM7ZDKXV12v6o9SzUK6VWAIfnifOC9fId6758Pm3ft63nbLNS6stp2wt+vq3jv2o9y01KqRVKqUOs7Qdbz12DUuoDpdTpae+5Ryl1h1Lqb1a7XlJKjVFK3WJd10dKqXlpx69XSn3POn+9Mmn1iLWvj4Nq3b8DlFIXA+cC/2HF+au1f5xS6hGl1Hal1Dql1LcGcn8z0VqvBl6i72f/c+Acld/RvBG4SilVXmg8Ye9CRJqwp3Ik8C5QCfweeADzh/MA4DzgNqVUSdrx5wL/BYwAlgO/G0DMfwEWAQcC5Zj/jnda+26wtldZbRgP/KCf9q8FRgH/rZQ6E/g+8K/ASOBF4P4C4ua8NqXUcOBxzJdBJXAT8LhSqjLtvV8Evmy1IwRcZW0/HygDJlrvvQRos/bdC3RZ1znPal8fUau1vtN63yta6xKt9bXWrjHAcIzLdrFS6lPA/wU+B4wFPsF8numcBBwKHAX8B/Br67onArOAc7LE/zAjfvoX3TnAj4AKYDXw39Y9iwP/wDxTo6zj7lBKzcw8/+5g3fN/tWLlogX4EuYzPgW41Hou0lkATAeOA35gCVGAa4Gp1s+JmM8vK1rrRdbLudZ9+YO1PgbzmY8HvgLcrpSqsPYV/HwrpT6L+cfjS8Aw4HRgp1IqCPwVeApzb78J/E4pNT3t7Z8D/hPzLLcDrwBvWesPY57hdM61rneq1b7/zHXdadf/a8zvyP9Y13+aUspnte0d69qOA65QSp1ova3g+5uJUuogYCF9P/uNwG+w/knLwZtANT2/l8K+htZafuRnyP8A64HjrdcXAKvS9s0GNDA6bdtOoMp6fQ/wQNq+EqAb8wU/2XpvIG1/NXBRWqx/Wq8/BazECAVf2vEK8wU7NW3b0cC6HNdyAbAhY9vfgK+krfuAVoyQyRq3gGv7N+D1jONfAS5Iu87/TNv3deDv1usLgZeBORnvH4358oymbTsHeC7Ptf4zbX0J0AFE0rbdifnCTL+GTmCyta6B+Wn7lwHfSVv/GXBLIfHT7tn/pq1/GvjIev154MWM438FXJvj/OnPyhKgNmNfK9BoXcNyYL/deOZvAW62Xk+2zjEhbf/rwBes12uBk9L2XZzelizn1sABGZ9LG71/D7ZZz9zuPt9PApdn2b4Q2ELv3537gR+mfS6/Sdv3TeDDjN/zhrT19cAlGZ/jmjyfe+qarVg/Ttt3JH1/J78H3D2I+7vLum/aus5w5nOD+YesEZgJHI/pGtDrbx7mn5BG69iLgOpCnyH52fN/xEkT9lS2pr1uA9BaZ25Ld9Jq7Bda62agDhjHbqC1fha4Dbgd2KqU+rVSahjmj2cMWGalcRqAv1vbc1GTsT4JuDXt/XWYL8fxeeL2d23jMK5UOp9gnAKbLWmvW+m5Z7/FfNk+oJTapJT6H8sJmQQEgc1pbf0VxhkplO1a60Taeq92WtewM6OdmZ9tvs+6EHJd9yTgSPvarOs7F+MyDYRvaa3LgDkY125CrgOVUkcqpZ6z0m2NGBdwRIHtHkfvZyrzcy+EnVrrrizn393neyKwJsv2cUCN1jqZ0c7BfM6Z17xbv9NpTALGZXzu38f8U5Jqe0as/jjEau/nMSIwnnmA1no75nf7ulwn0Vq/DzwGfLeAmMJehog0YV8hfRRVCSbdtgnzny6YLyGbnF/IWuufa60PxfzneyDw78AOzBfITK11ufVTpk2n4ZynylivAb6W9v5yrXVUa/1ynrj9XdsmzJdPOvth0ix50Vp3aq1/pLWeARwDnIpJX9VgnLQRae0cprXenXRg5rX3aqeVcqwspJ0DiNUfNcDzGZ9Didb60kE1Quv3gB9jUogqx2G/B/4CTLSE3VKMUC+EzaQ9B5jP2Sl29/muwaQFM9kETLRSi+ntHMznnHnNm6zXLaT9TiulMn+ns/3+rcv43Eu11p+29g/o/mrDgxgHO1f3hxuBYzHp/FxcC3yV3oJW2AcQkSbsK3xaKbVAmQ7m/wW8prWusf6T3Qicp5TyK6UuJPsXDEqpwy23I4j5EkgA3ZYz8BvgZqXUKOvY8Wn9WQphKfA9u++TMp3zP5svbn/XBjwBHKiU+qJSKmB1EJ+B+a88L0qpY5VSs5UZELALk37s1lpvxvQp+plSaphSyqdMJ/7Fu3Gtmfwe+LJSqkopFQZ+Yl3D+kGc02YrMEFlGViQg8cw9+zflFJB6+fwtL5fg+FejON4eo79pUCd1jqhlDoC01+wUB7EPD8VSqkJmFRhPrYC+xdy4gE83/+L6ex+qDIcoMxgltcwz+9/WPd1CXAaffsf7g7fUEpNsPpffh+w+9e9A8y0nqkIfft9ZV7/68AuZQa0RK2/BbOUUvYAgd29v5lcj+l/2ecfQG0GlfwM09cyK9oMPvgD8K1cxwh7JyLShH2F32P+G63D/Md6btq+r2KcqZ0Yp+rlHOcYhvmyqsekO3bSU1LhO5iOwa8qpXYBT2M6eBeE1vpRTOfsB6z3vw+cXEDcnNemtd6JccC+bb3nP4BTtdY7CmjSGExH7V3Ah8DzwP+z9n0JM8hghdWmhzEd/geE1voZTCmCRzCOxVTgCwM9XwbPAh8AW5RS/V631roJMxDiCxhXZgvmcwkPtiFa6w7MII5cZRe+DlynlGrCuC4P7sbpf4R5NtZhRPRv+zn+h8C9VmqvkNGrBT/fWuuHMAMxfg80YUa1Dreu/3TMc70DuAP4ktb6owLi5+L3mOtda/382GrDSkwK8WlgFZBZK+9OYIZ1/X/SWndjBGMV5h7uwIjNMuv43b2/vbCc1Ofp7YCncyu9//HKxnVkSZkKezdK693NBgjCnoVS6h5MJ99+R37taezN1yYI+VCm8OtFWuuni90WQXALcdIEQRAEQRCGICLSBEEQBEEQhiCS7hQEQRAEQRiCiJMmCIIgCIIwBBGRJgiCIAiCMAQJ9H/InsWIESP05MmTXY/T0tJCPC6joZ1E7qmzyP10HrmnziP31HnknjqPm/d02bJlO7TWWWfw2OtE2uTJk3nzzTddj1NdXc2SJUtcj7MvIffUWeR+Oo/cU+eRe+o8ck+dx817qpTKOc2YpDsFQRAEQRCGICLSBEEQBEEQhiAi0gRBEARBEIYge12fNEEQBGHo0tnZSW1tLYlEAoCysjI+/PDDIrdq70LuqfM4cU8jkQgTJkwgGAwW/J6iijSl1EmYiWX9wP9qra/P2H8J8A3MxLPNwMVa6xWeN1QQBEFwhNraWkpLS5k8eTJKKZqamigtLS12s/Yq5J46z2DvqdaanTt3Ultby5QpUwp+X9HSnUopP3A7cDIwAzhHKTUj47Dfa61na62rgP8BbvK4mYIgCIKDJBIJKisrUUoVuymC4BlKKSorK1MOcqEUs0/aEcBqrfVarXUH8ABwRvoBWutdaatxQOawEgRB2MMRgSbsiwzkuS+mSBsP1KSt11rbeqGU+oZSag3GSfuWR20TBEEQ9lJKSkoAWL9+PbNmzQJMHayysjLmzZvHQQcdxFVXXZX1vfZxVVVVVFVVcfzxxwOwdOlS7rvvPgAuuOACHn74YQBuueUWWltbB9Xe9HO7xT333MNll13magwvOPvss1m7di0AP/nJTzyJuXz5cp544onU+mOPPca1117ryLmL2Sctm6Ts45RprW8HbldKfRH4T+D8PidS6mLgYoDRo0dTXV3tbEuz0Nzc7EmcfQm5p84i99N55J4OnrKyMpqamlLr3d3dvda9oqmpiebmZpLJJE1NTbS2tnL00Ufz0EMP0dbWxoIFCzjxxBM56qijer0v/bj0c5177rmp152dnbS1tdHU1MTNN9/MmWeeSWVlZcFt6+7uxu/3p9bTz13o+3f3niYSCTo6Ohz7LLTWaK3x+bzzgj788EPa29sZOXIkTU1N/OQnP+Gb3/zmbp0j896nb891b1599VXeeustFi5cCMCiRYu4+uqr+frXv04sFut1bCKR2L2/IfaN9PoHOBp4Mm39e8D38hzvAxr7O++hhx6qveC5557zJM6+hNxTZ5H76TxyTwfPihUreq3v2rXL8zbE43Gttdbr1q3TM2fO1Fqbz/aUU05JHfP5z39e/+EPf+jz3szjbK699lp94403aq21Pv/88/VDDz2kb731Vh0MBvWsWbP0kiVLtNZaP/nkk/qoo47S8+bN02effbZuamrSWms9adIk/aMf/UjPnz9f33///TnPvXjxYn3FFVfohQsX6oMOOki//vrr+jOf+Yw+4IAD9NVXX6211vq9997T06dP11/60pf07Nmz9VlnnaVbWlpScbZv36611vqNN97Qixcv1lprfffdd+tvfOMbWmutH3zwQT1z5kw9Z84cvXDhQq211l1dXfqqq67Shx12mJ49e7ZeunRpn3uwbt06fdBBB+lLL71UV1VV6fXr1+e83u985zv64IMP1rNnz9bf/va3U/fta1/7ml6wYIGeNm2a/utf/5rrI8zK9773PX333Xenzu/z+fTcuXP1F7/4Ra211meccYY+5JBD9IwZM/SvfvWr1Pvi8bi+5ppr9BFHHKFffPFF/fjjj+vp06fr+fPn629+85v6lFNO0bt27dLNzc36y1/+sj7ssMN0VVWV/tOf/qTb29v1xIkT9YgRI/TcuXP1Aw88oLXW+oorrsj6/GQ+/1prDbypc2iaYjppbwDTlFJTgI3AF4Avph+glJqmtV5lrZ4CrEIQBEHYK7jiCli2LEoW42LAVFXBLbcM7hz19fWsWrWKRYsWZd3/4osvUlVVBcBnP/tZrr766qzHfetb3+Kmm27iueeeY8SIEezYsYMf//jHPP3008TjcW644QZuuukmfvCDHwCmRMM///nPftsXCoV44YUXuPXWWznjjDNYtmwZw4cPZ+rUqVx55ZUAfPzxx9x5553Mnz+fCy+8kDvuuCNnCjeT6667jieffJLx48fT0NAAwJ133klZWRlvvPEG7e3tzJ8/n3/5l3/pM1Lx448/5u677+aOO+7Ieb2XXXYZjz76KB999BFKqVQMMCno559/njVr1nDssceyevVqIpFIQe1+6aWXOOeccwC4/vrrue2221i+fHlq/1133cXw4cNpa2vj8MMP56yzzqKyspKWlhZmzZrFddddRyKRYNq0abzwwgtMmTIldT6A//7v/+ZTn/oUd911Fw0NDRxxxBEcf/zxXHfddbz55pvcdtttqWMPO+wwXnzxRT73uc8V1PZcFK1Pmta6C7gMeBL4EHhQa/2BUuo6pdTp1mGXKaU+UEotB/4PWVKdgiAIguAEL774InPmzGHMmDGceuqpjBkzJutxCxcuZPny5SxfvjynQMvGq6++yooVK5g/fz5VVVXce++9fPJJz7SNn//85ws6z+mnm6/I2bNnM3PmTMaOHUs4HGb//fenpsZ09Z44cSLz588H4LzzzitI/NnMnz+fCy64gN/85jd0d3cD8NRTT3HfffdRVVXFkUceyc6dO1m1qq9vMmnSpFSKONf1Dhs2jEgkwkUXXcQf//jHXinBz33uc/h8PqZNm8b+++/PRx99VHC7N2/ezMiRWecpB+DnP/85c+fO5aijjqKmpibVfr/fz1lnnQXARx99xP77758Sn+ki7amnnuL666+nqqqKJUuWkEgk2LBhQ9ZYo0aNYtOmTQW3PRdFrZOmtX4CeCJj2w/SXl/ueaMEQRAET7jlFmhqahsyNb0WLlzIY489xsqVK1mwYAGf+cxnUo6ZE2itOeGEE7j//vuz7o/H4wWdJxwOA+Dz+VKv7fWuri4CgUCfkYT2eiAQIJlMAuQsB7F06VJee+01Hn/8caqqqli+fDlaa37xi19w4okn5m1b+jXku97XX3+dZ555hgceeIDbbruNZ599tlc7M9tdCNFoNOc1VVdX8/TTT/PKK68Qi8VSIguMg2n3QzPZx+xorXnkkUeYPn16r+2vvfZan2MTiQTRaLTgtudCpoUSBEEQhDQOPPBAvve973HDDTcM+lylpaWpDudHHXUUL730EqtXrwbMIISVK1cOOkY2NmzYwCuvvALA/fffz4IFCwCYPHkyy5YtA+CRRx7J+t41a9Zw5JFHct111zFixAhqamo48cQT+eUvf0lnZycAK1eupKWlJW8bcl1vc3MzjY2NfPrTn+aWW27plZJ86KGHSCaTrFmzhrVr1/YRRADHHXccGzdu7LP94IMPTsUCCAaDqfY2NjZSUVFBLBbjo48+4tVXX83a5oMOOoi1a9eyfv16AP7whz+k9p144on84he/SAm5t99+G+j9GdusXLkyNXJ4MIhIEwRBEIQMLrnkEl544QXWrVs3qPNcfPHFnHzyyRx77LGMHDmSe+65h3POOYc5c+Zw1FFH7VY6b3c4+OCDuffee5kzZw51dXVceumlAFx77bVcfvnlLFy4MOsoRoB///d/Z/bs2cyaNYtFixYxd+5cLrroImbMmMEhhxzCrFmz+NrXvkZXV1feNuS63qamJk499VTmzJnD4sWLufnmm1PvmT59OosXL+bkk09m6dKlRCIRNm3axKc//WkAkskkq1evZvjw4X3inXLKKb1GTl588cXMmTOHc889l5NOOomuri7mzJnDNddc02fUrk00GuWOO+7gpJNOYsGCBYwePZqysjIArrnmGjo7O5kzZw6zZs3immuuAeDYY49lxYoVVFVVpUTdc889xymnnJL3/hRErhEFe+qPjO7cc5F76ixyP51H7ungGQqjO/d23nvvvdSo1T0Je1RsPt577z195ZVXZt3X2tqqjzzySN3V1TWodtgjUJPJpL700kv1TTfdtFvP6ZYtW/SnPvWprPt2d3SnOGkO0t0NbW3FboUgCIIg7J3MmjWLm27KPkNkNBrlRz/6UdZU6O7wm9/8hqqqKmbOnEljYyNf+9rXduv9GzZs4Gc/+9mg2mBT1IEDexOf/Sw8/DD4fPDss7B4cbFbJAiCIOyLTJo0iffff7/Yzdht7rnnnkGfo7+BDYVw5ZVXpkqZ2OxOkd/DDz980G2wESfNIV56CWbOhGQSVqwodmsEQRAEQdjTEZHmAFrDzp1wwglmva6uuO0RBEEQBGHPR0SaA7S2QkcHjB0L8biINEEQBEEQBo+INAewRdnw4VBZaVw1QRAEQRCEwSAizQHSRdrw4eKkCYIgDGX8fj9VVVXMmjWL0047LTV35Pr161FK8Ytf/CJ17GWXXZbq0H7BBRcwfvx42tvbAdixYweTJ0/OGqO2tpYzzjiDadOmMXXqVC6//HI6Ojr6bdtPfvKTQV1bdXV11gr4wp6JiDQHyBRp4qQJgiAMXaLRKMuXL+f9999n+PDh3H777al9o0aN4tZbb80pqPx+P3fddVfe82ut+dd//VfOPPNMVq1alaqyX8g8nyLShHREpDlAZrpTnDRBEIQ9g6OPPrpXXa2RI0dy3HHHce+992Y9/oorruDmm2/OW23/2WefJRKJ8OUvfxkwwu7mm2/mrrvuorW1lXvuuYfLLrssdfypp55KdXU13/3ud2lra6Oqqopzzz2X9evXc9BBB3H++eczZ84czj77bFpbWwEzvdOOHTsAePPNN1myZAnr169n6dKl3H777VRVVfHiiy8O+v4IxUXqpDmApDsFQRAGwLIriO5YBjmmJxoQFVVw6C0FHdrd3c0zzzzDV77ylV7bv/vd73LyySdz4YUX9nnPfvvtx4IFC/jtb3/LaaedlvW8H3zwAYceemivbcOGDWO//fbrNbdkJtdffz233XZbai7L9evX8/HHH3PnnXcyf/58LrzwQu644w6uuuqqrO+fPHkyl1xyCcFgsCDXThj6iJPmANmcNGv+VUEQBGGIYbtVlZWV1NXVcYJdP8liypQpHHHEEfz+97/P+v7vf//73HjjjSSTyaz7tdYopQreno+JEycyf/58AM477zz++c9/7tb7hT0bcdIcoK4OwmGIRo1Q6+qCpiYYNqzYLRMEQRjCHHoLbU1NlJaWehrW7pPW2NjIqaeeyu233863vvWtXsd8//vf5+yzz2bRokV93n/AAQdQVVXFgw8+mPX8M2fO5JFHHum1bdeuXdTU1DB16lTeeeedXgIvkUjkbGumqLPXA4FA6hz53i/s2YiT5gB1dUacKWWWIIMHBEEQhjplZWX8/Oc/56c//SmdnZ299h100EHMmDGDxx57LOt7r776an76059m3XfcccfR2trKfffdB5i06re//W0uuOACYrEYkydPZvny5SSTSWpqanj99ddT7w0Gg73asmHDBl555RUA7r//fhYsWACY1OayZcsAegnC0tLS3ZrCSBjaiEhzAFukgUl32tsEQRCEoc28efOYO3cuDzzwQJ99V199NbW1tVnfN3PmTA455JCs+5RSPProozz00ENMmzaNAw88kEgkkhq5OX/+fKZMmcLs2bO56qqrep3n4osvZs6cOZx77rkAHHzwwdx7773MmTOHuro6Lr30UgCuvfZaLr/8chYuXIg/rU/faaedxmOPPSYDB/YSJN3pAHV1MHX8VuiMMnz4sNQ2QRAEYejR3Nzca/2vf/1r6nX6xORz587tlZbMnAD8j3/8Y84YEydO7HXedJRS/O53v8u674YbbuCGG24AzMABn8/H0qVL+xy3cOFCVq5c2Wf7gQceyCuvvOJ5CllwB3HSHKCuDm4+/SR47WJJdwqCIAiC4AjipDlAXZ1mXOkq2LyWyqldQMBzJ62rC7q7zQAGQRAEYc9n8uTJvZw9Yd9DnDQH6GhpIhJogc5dDNemA6jXTto3vwlHH+1tTEEQBEEQ3EOctEHS1gYVkU2p9eCOpygpOcZTJ23nTrj7blObTWszylQQBGGoMpB6YYKwp6MHUEBVnLRBUl8PYys2mxVfCLb8w/Opoe65B9rboaMDrHmCBUEQhiSRSISdO3cO6AtLEPZUtNbs3LmTSCSyW+8TJ22Q1NXBuHLLSRt/GtT+if3GNrBzZ7kn8ZNJ+OUvIRAw/dI2b4aKCk9CC4Ig7DYTJkygtraW7du3A6YQ6+5+cQn5kXvqPE7c00gkwoQJE3brPSLSBkldHYwtt5y0KedDzSMsOuhFnv04+5xuTvPSS7BmDXz1q/Cb38CWLTBjhiehBUEQdptgMMiUKVNS69XV1cybN6+ILdr7kHvqPMW6p5LuHCR1dTCuYhPdKgbDTUHCSSM3eZbuXL/eLM84wyw3b/YmriAIgiAI7iIibZDYTloyPA5CJs84oqzBs9Gd9fVmefDBZrllizdxBUEQBEFwFxFpg8R20lRsLPij4AsxvKSeujrTX8xtbJG2335mgndx0gRBEARh70BE2iCpqzOjO/0l40zti1A55bF6kknImHnEFerrobTUDBwYM0acNEEQBEHYWxCRNkiam7Vx0qJjzYZQBfGgsbfa2tyPX18P5dZA0rFjxUkTBEEQhL0FEWmDJNneREm4BaLjzIZgBbGAEWmtre7Hr6/vKbkhTpogCIIg7D2ISBsk4aRlXaU5aRFfcUSaOGmCIAiCsPcgIm2QxJRVyNZ20kLlhJUp+++FSGto6O2k1deb2QcEQRAEQdizEZE2SOK+vk5aiOKlOwG2bnU/riAIgiAI7iIibZAMC2Y6aRUEdANKJT0bOJCe7gRJeQqCIAjC3oCItEFSEtxKR3cYgsPMhlAFiiSlkSbXnbSODuPWZTppXg4e6OyEL38Z3nnHu5iCIAiCsC8gIm2QhFQzbV2lpkYapGYdqIjXuy7S7EK2xXTS3noL7rkHHn3Uu5iCIAiCsC8gIm2QhHwtdCTjaRtM0bLyeIPnIm3UKKMVvXTSXn7ZLNeu9S6mIAiCIOwLiEgbJCF/C529RJp3TlqDGUSaEmmBAFRWwrZt7sZN56WXzHLNGu9iCoIgCMK+gIi0QRL2tdKps4i0WL3rAwdsJ82ecQDMFFFeTEcFoHWPSBMnTRAEQRCcRUTaIIkEWuhWsZ4NlkgbXuJ9nzSAeNw7kfbJJya1Op/VeXQAACAASURBVHGiWXpRckQQBEEQ9hVEpA2Czk6IhlrpVn2dtFHlxRFpJSXQ0uJuXBvbRTv3XLMUN00QBEEQnENE2iBobYV4uIVkukgLlIDyMaLM+4ED4K2T9vLLJr16+ulmXUSaIAiCIDiHiLRB0NZmRJr2p6U7lQ+C5YwY5k2ftFgMQqGebSUl3om0t9+GQw6BAw806yLSBEEQBME5RKQNgtZWiIVbwR/vvSNU4VmftHQXDbxNd9bVwejRMHw4DBsmIzwFQRAEwUlEpA0C20kj0FekeVWCI1OkeZnubGgwI0uVgv33FydNEARBEJxERNogaG3pJhpK4AvGeu8IlVMeK56T5rVIAxFpgiAIguA0ItIGQXur6XSmQn2dtGERbwYOZBNpra2QTLobO5GA9vae+FOnwrp17scVBEEQhH0FEWmDoKPVdP7yh/uKtNKwNwMHsqU7tcb12PZsB7aTNmWKEW1ezhsqCIIgCHszItIGgS3SAuHMdGcFJaF6Wlu1q/Hr63vPNgDGSQP3U56ZIq2ysvd2r9Du3mJBEARBKBoi0gZBV7vJZwYiGU5asJyArxPd6V6+s7sbmpr6irS41RS3R3hmTkk1bJhZ7trlbtx0br0Vpk2TFKsgCIKwdyIibRB0JYwSCsUyRFrA2Fmq2z2lZKczbefMplhOWjFE2nPPmbIfq1d7F1MQBEEQvEJE2iBIdhgRFoxmijSz7ku656TZgxKi0d7bbZHmtpM2FETaBx+Y5ZtvehdTEARBELxCRNog6LbSneF4Rp+0gFkPqBa6u92JbTtpsYzQdrpzb3fS2tp6iue+8YY3MQVBEATBS0SkDQLdZeyqcJ90p1mPhVtdG2VpO2mZIm1fSXd+9JEZNKCUOGmCIAjC3omItMHQaUSaCmaINGsuz3i4xbVaaf2JNC/SnZGI+QEz0Tp4J9JWrDDL446Dt97CNcdSEARBEIqFiLTB0G0pJX9mutNy0kKtrou0zD5pXqY700eW+v0mtlci7YMPIBCAc84x9+LDD72JKwiCIAheISJtEKRGb2bO3Wmtx8MtrqU7c/VJ8yrdma1G27Bh3oq0Aw+EY44x65LyFARBEPY2RKQNAl/SEmn+DDvLGjgQj3if7rTXvUh3FlukzZxphFpJiQweEARBEPY+RKQNAp9upa0jZnqvp+P3Lt2ZKdL8fpMC9TrdCd6JtNZWM5n7jBng85l5QzdscD+uIAiCIHiJiLRBEKCFRFc8yw7vBg5k9kkD4yztzSLt44/NyM6ZM816RUXPDAiCIAiCsLcgIm0QBFULie4sIs0aSOBmCY5cfdLAdOD3It2ZObm7VyJt2zazHD/eLIcPF5EmCIIg7H0UVaQppU5SSn2slFqtlPpulv3/Rym1Qin1rlLqGaXUpGK0MxcB1UpnMotK8vlJqnBRSnCA+06a1sV10jJrtImTJgiCIOyNFE2kKaX8wO3AycAM4Byl1IyMw94GDtNazwEeBv7H21bmJ+RroSOZxUkDtD/uSZ80u05ZOiUl7jppbW3Q2blvi7Rk0ohVQRAEQXCLYjppRwCrtdZrtdYdwAPAGekHaK2f01rbMudVYILHbcxL2N9Cp84u0gjEXXfSotG+YxbApDvddNIyRZKNLdLcFi92/LIys6yogETC/HhBdzdMmgS33upNPEEQBGHfJFDE2OOBmrT1WuDIPMd/Bfhbth1KqYuBiwFGjx5NdXW1Q03MTXNzM2W+FpoTFVnjHdahiIVbeeX9tVRXOz/0cPXqaQSDo6iufqnPvkRiFlu2RKiudqd42Lp1MeAINm78gOrq7ant27dPJJmcyt///gLRaHK3z9vc3FzQZ/fuu1Pw+yfy+usvoBRs3z4OOJDHH3+ZysqO3Y67u2zZEqG29ihuvLGNuXNfyyqUhwKF3k+hcOSeOo/cU+eRe+o8xbqnxRRp2b7asnowSqnzgMOAxdn2a61/Dfwa4LDDDtNLlixxqIm5qa6uJhZqpS08lWzx9N9GEA+3MLZif5Ys2d/x+PfdZ5ykbLEnTYItW7Lvc4Jg0Cznz59JeoiPPjLLqqpFjB27++etrq4uqM0PPmjcs2OPNcdu2WK2H3zwMczITJi7wDPPmOWmTVECgSUsXOh+zIFQ6P0UCkfuqfPIPXUeuafOU6x7Wsx0Zy0wMW19ArAp8yCl1PHA1cDpWut2j9rWL1pDNNhC0pc93akCMUoi7vZJyzZoANwfOGCnG7ON7gT3+6VlDlqw2+FVv7TVq80yEIB77vEmpiAIgrDvUUyR9gYwTSk1RSkVAr4A/CX9AKXUPOBXGIG2rQhtzElnp0ln5hJpBOKURt3vk5YNr0Ratj5p4I1Is/ujgfcibc0aCIXg3HONq+d2uRNBEARh36RoIk1r3QVcBjwJfAg8qLX+QCl1nVLqdOuwG4ES4CGl1HKl1F9ynM5z2tv9xMMtfSdXt/HHKHF5WqhcTlo8bvYnd79bWEEMBZFWTCdtzRrYf3846ywjht95x5u4giAIwr5FMfukobV+AngiY9sP0l4f73mjCqQ9oYmGEpBndGcs7F66s60tf7pTa3NMPEfzBkNjo1naoszGK5HW2AjjxvWsFyPdOXVqTxu2b89/vCAIgiAMBJlxYIB0d3QBoIK5RFqMWKjFtRkHejlpbZthzV1Qa4zGkhKz2a2UZ2urmSM0FOq9vVhOmv3aC5GmtXHSpk6FkSPNNhFpgiAIghsU1Unbk+lub4cIqGCudGecaLDVtf5KqT5pO16Ff8wHnYRwJUzYkXLP3IwdyzKvfLFEWiAApaXeiLRt28x9PeAAEWmCIAiCu4iTNkC6O0w9Ln84d7ozEmyhvd2dyq4pJ63hPSPQJp4N7Tuhq9UTJy1bqrW01CybmtyJC9DRYeKnDxwA72YdsEd2Tp1qRHI8LiJNEARBcAcRaQOl04g0Xyh3utOnNLrLnaohqT5pbZvNhnEnm2VrjWdOWibhsEmBuumk2f3hMgcteCXS1qwxy6lTzXLkSBFpgiAIgjuISBso3WYOIn9OkWa2q6Q7SikllNo2QXgklFiqobUm5aS55WjlG1nq9vydxRZpq1eDzweTJ5t1EWmCIAiCW4hIGyjddrozR7EyqzSHL+n88M5k0jhp0ShGpEXHQtyqC9xSk6qf5tZclsUUabnKf3jppE2caFxDEJEmCIIguIeItAGiujsBCITC2Q+wnLQAzjtptvhKpTuj4yA63mxs3SAizUW2bqXXlFdei7RXX4Uzz4RVq7yLKQiCIBQHEWkDJWlEWjAcyb4/YFSMGyLNLuuRSndGx4I/DJHR0FpDJNL7OKcZCiKtWAMHGht7T4dlizTtzviQPvzxj/DnP8Phh/fMISoIgiDsnYhIGyDadtIi+Z00v3Y+3WkXyI3HuiGx1ThpALGJ0NIj0orlpNn9xtwgn5PW1gbtLs/umjkl1ahR5j57NTXUJ58YJ6+iAn74Q29iCoIgCMVBRNoAUZaTFgrnEGlWn7Sgz/lvb1uklUe3g+7uLdJaiyvS7Cmp3CLfwAFw303LrNHmda20Tz6BmTNh/nyorfUmpiAIglAcRKQNEKWtdGc/TlpQtTqeCrNFUEXEKr8RtTpJxfeD1hqiEROwGCItGnVXpDU0mNGV9ghWGy9EmtZGJGYTadu2uRc3nU8+gUmTzJRUmzZ5l2YVBEEQvEdE2gDxWSItFM3VJ82ItFi4ha4uZ2Pbfc3KQpvMi3QnrauZsK+x13FOk0+kxWLuxQUj0oYNM0ItHVuk2elQN2hrg87O3ulOL520RAK2bDEibfx4U9h350734wqCIAjFQUTaALHTneFo/nRnLNTquKNlO1WlgQwnLWbKcPjaNhAKueOkaV18Jy0z1QneOGnZUq1eirQNG8zSFmkAGze6H1cQBEEoDiLSBoid7vQF8qc74+EWxzuzpwYOKMtJi4wxS0uk0Wpqpbkh0jo7obu7fyfNrTRcZrrRxguRlm1kqZci7ZNPzHLy5B6RtmmT+3EFQRCE4iATrA8QP6aYLb5g9gOsEhyxcKtrIi3KJgiPAH/IbIj3iLRIxJ20ox07n5MGZpRlJEcmeDDkctLcngrLjg2948fj5jq9FGmTJvVsEydNEARh70WctAHio4O2jggoleOAIN06SDzc4rijZYuvsN7c0x8NIDIWlD8l0txw0voTafZ2t1KexRRp2dKdSnlX0Hb9evD7jYtmF9QVkSYIgrD3Ik7aAPHRSUd3mByTQgHQrWKupjuDXZsgnlb+3ueHyCho21I0kWY7aW4NHsisU2bjpZOWGd8rkfbJJ0agBazf2lGjJN0pCIKwNyNO2gDx00Fnd47+aBbdKk4s5F6609+R4aQBBMuhs5FotDjpTredtMZGM7ozk2DQ/Hid7gRvRZo9sTuYMhxeO2mrVsGVV7pbsFgQBEEwiEgbIAHVQUc/Ii2p4q45aUolUe1bekZ22oSMSHPLSbNFULGctNbWvjXSbOJx79Od4K1IS++PNn68t07a44/DYYfBLbfA3/7mXVxBEIR9FRFpA8SvOujszt8zPumLEQu7U4Jj+LAWlO6GUEXvncEy6GjYK/ukdXZCV1f+2Q7cdtICgR4halNe7r6z1NVlXLNMkealk3bBBTDRGpuydq13cQVBEPZVRKQNkIDqoDOZ30nTfnectLY2GF1hzWIeKO29M1QOHQ2uleAoZp80W4DZ/c8y8UKklZf3HStSWgpNTe5W/9+40ZQ+yRRp27aZorZus2sX7NgBX/oSjB4Na9a4H1MQBGFfR0TaAAn4OujqR6ThjxIJJlxJd1aWNZmVYEYHrWBPunNv65PWX2wv0p3ZRpaWlhqny83J3XfsMMvRo3u2jbO6I27Z4l5cG3ue0IkTYepUEWmCIAheICJtgAR97XTr/CJN+SNEQ22upDtHpERaFiets4FIRO+1Tlox053ZRpbafeSam92NDb3jeznrQE2NWYpIEwRB8A4RaQMk6OugS+fvk6YCERedNCvd2cdJK4NkJ8NizotDOzYU10krdrozk1JLJzc1uRsbescvhkibMMGItI0b3UmnC4IgCD2ISBsgQX8H3fTjpAWjRENtjou0RALK45YiyNYnDagoaXQ13ZlLKLnppA3ldCe4K9KyjSy1C9pu3uxeXJvaWtMXb/x4I9K0NsV1BUEQBPcQkTZAQv5EvyLNF3THSUskoCKey0kz3+Ll8QZXnbTMEY42bjppku7sHd8WbPY+N6mpgTFjTC26/fc32yTlKQiC4C4i0gZI0N9Bsl+RZgYOOC2W2tuhNJarT5r5Fi+LuifSIhHwpT85m/4GHcbq8cJJK1a6s5hOWkODcbJK0z7uYNAIVi8Ky9bU9JTfmDrVLL0WaS0t3ghSQRCEoYKItAES8neQJH+fNH8o4lq6syya30kbFm2ku9uMOnSS1tYMJ2vr81D9aVi9FIBQyAi4vW10Z2enOXc2J82rdGdZWYY4xmzzQqTV1pr+aGCmo4rHvRdpZ54JJ5/sbUxBEIRiIiJtgIQC7SRVfifNH4wQDSVob3e2gFZ7O5REmkAFwJfRBqtPWmnYWA5OO1p9RNr715ll3duAcXvcmpKqkDppra2QTDofO9dsA9Aj0txOd2YTiF6INK17O2lKGTfNy4K2L78MTz8Ny5Z5UxdOEARhKCAibYCEAwl0pkDKQAVM7q/L4W+VRAJKwk3GRcusrBo03+Qllkhzo/xHSqRt+ydsfdYIxYZ3UsfEYsVz0sAdgZhPpNl90txOd2aL7YVIa2w0AtQWaeB9GY7/+3/NsrMTVqzwLq4gCEIxEZE2ALSGcKC9r4uVid+kQ5MdzqqG9nYoCe/q2x8NUk5aSch8c7sq0j76GURGwfRvQtNK6DLXWazJ3W2R5kbKM1vHfRuv+qQVS6TZhWztdCeYwQPr1rk7y4LNe+/BY4/BeeeZ9XfeyX+8IAjC3oKItAHQ2QnhYDval79PWkqkdTqrlBIJiIWa+pbfAPBHwRckFvAg3dn4AYw6FkYcDToJje8D7jlptvjKNbLUC5GWTSiFw6YTvxd90jLxQqSlF7K1GTnSPIduiPFMnn3WLK+/3nz2ItIEQdhXEJE2ANrbuvD7kuDvf1oogGSXsyKtvR1iwV19Bw2ASX8Gy4j6XU53ag2tGyE2Hsrnmp315tvTTSctFuub4bVxU6TlS3eCSXm63Sctl5O2a5d7caH3lFA2FRVmWV/vbmwwhXPDYTMN1uzZsHy5+zEFQRCGAiLSBkB7m1E+qj+RZjltusv5dGc00JQ93QkQLCfsdznd2dkI3a0QHQclUyBQkuqX5qaTlivVace1j3OafOlO6Jlk3S2Kme6sqTGjSu3iuQDDh5tlXZ27scGItPHjjTifO9c4aV6kWQVBEIqNiLQB0JkwNTVUoB+RZg0cwEEnzS6rEQnkcNIAQuWElctOWtsmsyE6HpQPyud44qTlGtkJ7jpptktmDxLIxE2RlkwatyybQBw2zFyv06VW0tm40RSyDQR6ttlOmpciDYxIq6vzZiosQRCEYiMibQB02CLN30+fNLvPWtI5xWLXXIv4cvRJAwiWEVIu90lrtb4lY+PMsqLKOGlauzq6M5+T5qZI66/8R2mpe+nOpibjHOVy0sDdlGd9PVRW9t5mO2lepDtra3tEWlWVWXqd8uzs9DaeIAgCiEgbELaT5gsWNrpTJZ2zs2xnLORryuukBbXL6c42S6RFrW/P8tnQuQtaa12tk1YsJ6211aTbIjl0eUmJe05avkELtkhzM+WZLdXqlZOmdW8nbc4cs3z3XXfjprN+vbnPf/+7dzEFQRBARNqA6Gw3ysfXX7rTGjhAt3NKyThpmpDK0yctVE5Ae5XutJw0W6wltuy1Tlo8nnvQgpvpTluA5RrdmX6MG2QTaV45afX15hm2RVppqWnLpk3uxk3n4YfNPx2PPOJdTEEQBBCRNiC6rJyjv0Anzaeds5USCYiHW1BK53bSgmX4u51PdyaTVvkPO90ZqujpdxcZaTVwu+ujO3PhtkjLF9tNkTYUnbTSUvD73XfS7L5ntkgDU/5j+3Z346bz6KNm+Y9/yIAFQRC8RUTaAEiJtFB/ddKMgPFpZ520Yfa8nTn7pJXjS7YS8Hc66qTZwivlpEXTvjkjo6wGbnN1dGex0p39xXazT9pQFGlKmZTn3i7StmyBV16ByZPhk09g48YcRfoEQRBcQETaAOjqsEVaoU6as33SSqOWZZMn3QlQFm10VKT1qvjfurEn1QkQ7uukOe069OekRSJGPBRDpHnRJ60Y6c5kMnch3eHD3U93ZpvtwEuR9uc/m+f4ppvM+ptvVngTWBAEARFpA6LbmkEgUKBI8+Ps6M6Uk5Yn3QlQHm9wT6S1WYVsbQIl5notJw2c7w/XX8pRqZ5J1p2mv/IfpaVm4m83Jv/OV0jXbZHW3GyEWrbYXjpp6TXavBRpf/qTmaf0zDNh0iRYtkxEmiAI3iEibQAkLSctEC5s4IBfOeykRSzLJle603LSymMNjvYNS4m0SDcktvROdypl3DTLSQN3yn/kE0pg9hcr3QnupDzzOWnDLJ3uVgmOfKlWL5y0jRth1CgIhXq2jRwJO3YY8eg277wDixaZx/uEE+Dttyvo7nY/riAIAohIGxDdXYWKNOOkBXC2T1pPujO/kzaq3FknzT5XeWSrmaszNq73AeGR0L495XY56Whp3X+6E9wVafli20Vu3Uh5NjSY2MFg333hsPlxy0nL5+J55aSl90cDI9K6u3sEpFt0dcHWrT2p1sMOg5aWAFu3uhtXEATBRkTaAEh2GpEWDPdXzDZAt/YT9LmV7sw1cMCIt4rSZldEWmkwo0aaTWQUJLa54qQlEkao9XKzav8Cr5zfq/NbsZ00N0RaY2PuOUPB3amh+nPSiiXSwLhpbrJ1q3Hrxln/i9gpVy/Lf9TWwptvehdPEIShhYi0AZC0+qQFI/04aUBXMkrArXRnLictYNRERUmz40IJoNSfUSPNxkUnrVd/OJsP/wfW3QeN76c2FVukuZXuHIoiraLCxHUz/ZdPpLndL80WY3Z8W6Rt3uxu3HSuvBIWL/Zm+i1BEIYeItIGgO42TlqoEJFGhEiwzbG5FQsqwREwubdh8RZHnTR7Sqq4z54SyjsnrY9Ia90I218yr2v/kjqu2CLNrXRnrondobhOmtbuxU4kjFtWbJFmO2n20isnLZmE6mrz7P/6197EFARhaCEibQBoq09aKNq/SOvWUSLBRErgDBbbSdMqkOrz1oegEWllcXfSnVFlfTvaZTdsIiOhu42SiFFJTjppfebOrLHKv8cmwEb3RVp/gxbc7pM2FJ00t2cdsNOZo0f33u6VSLNHltribPRoUEp75qStWGHuQTQKt90m84cKwr6IiLSBYM3FGY720ycN6FYRIqGEY2LJdtK0vzT3HEV+oybKYs6KNFtohlSDcfF8gd4HhE1B29LQNsBlJ23Dw1A2Cw64BHa+Dm3mm9MNkdbZaX6K2Set2E5atvhuz99pi7+KjKoXXjppfr8ZXQoQCEB5eadnIq262ixvvNEIxoce8iauIAhDBxFpA8FKdwbS6wLkIEmEaLDNWSctmmdydQCfH/wRSqItrvRJC9EAoSzf2tbUUKVB8+3pWp+0ts2w/Z+w32dhwulmx8bHAHdEmn2+/qaFAnf6pDU39zh12XBbpJWUGIGSidtOmi0QM0VaJGLa5IVIGzPGCDWbysp2z9Kdzz8P++0Hl15q2iETvAvCvoeItIGQbKejKwiq/9uXVFEiIefSne3t1sCBXCM7bQIllEbccdICuhGCWfJfVvoz5jPfnk4KxF7pzvrlgIYxxxk3LTYRtjyd2u+WSCtWurO//nBui7RcqVa3nbR8qVYvCtpu3NiT6rSprOzwxEnT2oi0xYvB54MDDjDTUgmCsG8hIm0AqGQ77V3990cD0L4IkaBz6c5EAkoizahgP1VdA3FKHBZp9rkCyYZUwdxeWPN3Rn0m3emak9ZqzRUU28+kfEsPhJYNQI9Ic3JKqkJEWiRiHBenRZrWJn5/TlpTkzujLPOJNNtJczvdWSyRtmlTX5E2fHiHJ07ahx+a61uyxKxPmiQiTRD2RUSkDQCfTtDe2X9/NDAiLRpyLt3Z3g4lkVZUoD+RVkI87Gy6074GX3dDXictrF120lprjYsZHWNtnAitNan93d3OTs9kC8R8Ik0pk/J0WqQlEmaUX77Y9qwDXpf/sJ00r9Od4J1IyxxZOmJEO1u3ult2BMxMBwBHHGGWkyaZmmlOjRIvBKdnDBEEYfcRkTYAlG6no7v//mgA+J0f3RmPtIK/n9L7gRJiIXecNF9Xjj5pgTj4o4SSLjtpbRshMhp8Vgn+6ARIbIZklys12gpx0sC4XU7PG2rH7s9JA3dSnvlEWjhsPg+3053ZBi24LdLa2sx1ZXPSkknvyn/Ysx1MmmSEoVf94errjUC96CJvpt8SBCE7ItIGgI92OrsLS3fijzgq0trbIRZuhUB/Ii1ONOi8SPP7QXXm6JNmzd/p69yOz+fi6M7WWiPMbOITzTRVbZtdqdFWyMABe79bIq2YhXTzjSytqHDXScs1aMEWaU6mtdOx+51l65MG7oulTZtM6Q373k+aZJZepTxfe818rnfeCV//ujcxBUHoi4i0AeDfTSctGmpztARHLFSISCshGnS+mG04rKEzR580gMgoVPs2IhEcjd0n3RlLE2m2YGutdVWk9eekuSHSbOGVL7a9rxizHbgp0urrc8ceOdI8j25cM/SdbcCmstL8t+X24IHNm41AtKvsFEOkKQVf/Sr86lewcqU3cQVB6I2ItAHgVwk6CnTSfAFnnbREwhJpBaQ7I37np4UaUdZsXKtgDnvFmhrKaZHW2mpcvGCQviItPtE6qKaoIi0aLU66026X06Nate5fpLnRD8+moSF7fzRwv1ZaZiFbGy+dtPTY++1nluvXuxvX5vXXYcYM+MpXzPqHH3oTVxCE3ohIGwB+1U5XsjCRpoLOpzsjwbaC0p3hgPMlOEaWWR2FcjlpoQroqHdFpMVioLqaoLOx95RUtmBrrSFijedwI9WaEmlaw7s/gB2v9zquWOlOt0Rac7Ppj9SfSHPLzconEEeMMEu3JlnPnBLKZvhwI9LcdtIyRVosZorqeuGkaW2ctCOPhOnTzbaPP3Y/riAIfRGRNgD8tNOZLCzd6QtGHR3dmUhoIsHCnLSQr4Vk0rkRYcZJs3qn5xRpZdDZ6Eq606Q6LYsjvU9asNwMWvAq3dm0Gt7/L3j1fEj2zNVTrHSn7bI5LdLsgQj5RFpJibtOWq7Y9na36sNt3mwGRmQ6ecGgZsQId0Wa1tnLf3hVhmPtWti504wsLS834lBEmiAUBxFpAyDga6erQJHmD0YIBTppTzgzZj/Z1Y5P6f6dtGAJIdWCUklHXbzKYZaTlm3gAJg0aEcjkYh2LC4Y0RWNYkZ2Qu90p1Jm3at055anzHLXR7Dql6nj3HTSCkl3Ou1o5Ssma+NmurO+Pne60y47smuXO7Hr6kwduGwzr40d6266s6nJfO5jx/be7pVIe90yiI880iynTxeRJgjFQkTaAAj6EnQWmO70h4xq6Gp3yFbqslSAP5r/uEAcpbSjgxYSCagstUVajj5pwTLQXZSXOBcX0kRaqpDthN4HxCb2ctKcdvECAas/HMDmpyA+GcacAO9eCx3mnuxt6c5ii7R8TpqbZUcgv0AcNcrdEhy5Uq2TJsGGDe6NaLV57TXzuzZrlln3WqTV1cHvfgd33+1dHzxBGKoUVaQppU5SSn2slFqtlPpulv2LlFJvKaW6lFJnF6ON2Qj62unWBTppIdNJqrvDGdXgS9oirf90J0A83OKokza8tL8+aWZ75bBGx8t/RCL0iLRoxjeYy05aSiQlO2HrczD2RJjxH2ak605jPbiZ7sznpLmV7sxXp8zGFmlOC4dk0rhkuUSa7aQVQ6S5OaIVcpf/mDTJfiDNMgAAIABJREFU/B5s2+ZebIC33oJ583pKn0yfbvr+uVUPL5Mf/xjOOw8uvBAuv9ybmIIwVCmaSFNK+YHbgZOBGcA5SqkZGYdtAC4Afu9t6/IT9LfTpYP9HwgEwkakJbucUSzKFmkFlOAAKAk3OzqytDzWT580y2EbXuqiSAtXQiDDSYxNNHXSwqaPmNMDB1Iibcdr0NUEY/8FymaabbtMfYJiOWmhkBn56nS603bIbEGUjdJSU2TVydQ2GPGldfHSncUUafmcNHDfXaqpgSlTeta9Hjzwxhtw+OFw1lnw5pvexBSEoUoxnbQjgNVa67Va6w7gAeCM9AO01uu11u8CQ6rmddC/O06aERPJTmdUg18X6qSZb/WSiHMirb0dyuMFpDuBirjzIi2V7oxO6HtAbAKgifuNDeGak7blH2ZKqtGfgsgYI4abVpkmxExcJyu0t7QYARbK87gp5c7E8oW4eHYhXadTnv2lWv1+065iTSxfX+9e2jGXSLNnH3CzP5zWPTXabLwUackkLF9uBi0sWGCudcsW9+MKwlClmCJtPFCTtl5rbRvyhP0Juil0dKdx0rRDTppP756T5mS6M5GAsmgD+CPgz9Enz5ouqqKkwfE+aZEIZuBAZn80ME4aENO1qeOdopdI2/kalM81TqJSUDoNmnqcNHC2P1xzsxEj2Tqwp1MskWbv81qkgXHTipXu7Ohwb27LTZvMfbUFsI1ddmTnTnfigrnu9vbeIm3KFJP69EKkrVljnrtDDjE/YNKvgrCvkmXCFc/I9rUzoP9NlVIXAxcDjB49murq6kE0q39GJqZDSXlBcSoTq5gNbKldT3W1A0Wdusw3w9vvfkzjx7mFYln7KuZhnLSXXlpGff3gv0Xr6o4gqLfQrmO8kuPa453rOByg8xPq61uprn4963HZaG5uznlPd+48nJKSVjoa17GjfTwrM46Ld27mcGDNe08Cx7BixTqqq50ZCldbO5fOTh/V1W9z+PaPaA1M4gMr/oy2ckp3vctr1dVs3DgemMY//vESZWWdec9ZKKtXTycYHE519St5j/P7j2Dt2iaqq3uqjua7n4Xw3nuTgCm8+ebz+P3ZfzU/+WQEMItnn32DDRucU4lvv10OVLF+/dtUV2dXYsHg4axZ00J19QrH4oJJ3zY2LqGxcT3V1et77WtubmbbtpXAgTzxxMuMGNHhaGyA5ctnUF5e0ud3p63NByzijTfWcMABNdnfPEjWrYsDh1Nf/wHV1T2jI8aOPYKXXmqhuvoDx2OmP6fPPjsSmEl395s0NbUBC3nkkXXEYh5NtbCXMNjffaEvxbqnxRRptcDEtPUJwICMfK31r4FfAxx22GF6yZIlg25cXpa8zPbqagqKs6UbnoXRI8tYsmThoEMvDf4FgHmHz4fhh+Q+sK4M/m5E2qxZJ7Bo0aBD4/fDyPJ2wiWjcl97y1T4M+w3RqFUrLB7ZFGd5576/bDfxCghvYtxU+Yybm7GcW0Hw6Mw+8BR+HwwZswUliyZkvVcu0soZFyMJYsXw0M7iU/6DEsOteK/+yx88DxLFh7D2rVGNM+bNz9VIX6w/OpXxrnp7z6OGAHxeIwlS0antuW7n4Xwt78Z9/K44xbnPKbD0igHHXQ4CxYMOFQf7E7qxx47j7lzsx8zdiyEQnGWLBnlXOC02PPmTWbJksm99lVXV3PkkQcCcPDBxzBzpqOhAbjmGpg6te9nrrWp3TZs2FSWLJnqfGB6Ps8TTpjZ6/OsqoL163fv97lQ0p/Tv//djKI+//zDCIVg2jSor3fud7kQtm2DRx81sy1kmzd2T2Cwv/tCX4p1T4uZ7nwDmKaUmqKUCgFfAP5SxPa4g98qgd/tTA4sQPFGdyYSUBpuyF0jDVLpzmFR5/ukVZQ0mSmpQsP7HhA221THTqJRlwrpdjZCV3MqtQqYdKdOQvPaVLrTycEDdrozRbK7p6BvGm6lO/OlOsG9yd2Lme60BwXkS3emH+c02QrZgkl5jxjhbrozV3+4sWO96Rv29tswc2ZPH8xDD/U23blqFRx9NFxyifknRRCKTdFEmta6C7gMeBL4EHhQa/2BUuo6pdTpAEqpw5VStcBngV8ppZz32t3GrmfmgEjTGkL+AvukBa3RnQ4PHIiHGlJCLCuBEkBREm50vJjt8BLL4ghl+fb0BSE4DNqNSHNldGfLBrMhni7SjKtC0ypXRFqv/nAAK38Of5oAr10E7T3f1iUlxRVpxeiTVlbmzujOYoq0bB3306msdG8qLOgp/5FZSHf0aBPXqdlLsqG1EWmHpCUIDjnEFPB1U5jadHfDpz5lnqlIBJ591v2YgtAfRTVztdZPAE9kbPtB2us3MGnQPRfLSfMlB68a2tutydWh4NGd8XCLo8Vso4FGCO6f+yDlg+AwSsLOO2nlMUukhbM4aQChSuhwXqT1TEll9QPKdNIAmla6JtJ6iYVNfzdidO09kNgOi/8MmPbV1joXF4ov0ny+vp3n0ykrc8dJ608guinSWlvNs2tPIJ+JF05aeTmpeoM2o0cbEbVzp3ntBhs3miLB8+b1bEsfPHDCCe7EtVmzxvwO3Xkn3H8/PPOMu/EEoRBkxgG3sdOdycErlvZ2iIULdNL8zpbg0NqKH2jIXSPNJlhGPNhIZ6f579SJ2L1EWrZ0Jxjx5oKTllekhYebum0uOWm9hFKyC3a8BJP/Dfa/ELa/mKoDUex0p9Mirb7eiDBfnr9Qe2O60+4PNzzHI+62k5Yr1TrK6va3dat7sT/6yCztmQ4ADj7YLFevdi+uzbvvmmVVlXHU3nvP/cLBgtAfItLcxkp3+hm8akgk0p20SP6DfX6SvqhjxWy7uiCZ1ET8DblrpNmEyokFzbenE7E7O40WKYtY34q5RFqo0nGRprURP7EYRqSpgKmPlk7pga46aal0Z91b0NUCoxaZQSMd9dBiRr0VS6S5WYIjX6oTjIhrbXU+BdefSLNnYHBDpNnnzCXSvHDSsok02z1zU6TZ/eEmpOVORo82g4Y29u2G6Tjvvmv+KZgxA447zmyTlKdQbESkuY0lpvzaoXRnuJUuHTVpxX5jxx0bONDeDpFggoDqKMhJiwZMzsiJlKctuErDefqkgXG0OnYSiTgn0hIJI9RMn7QaMx2Vz9/7oNJp0LTaNZGWEkrbXzDLUYugwsoD1Zte1SUlznfeL0SkhULmxw2Rlksk2bg160B/Ii0QMA6inRZ1EttJyxW7stK0zwmHOhu5+sN5KdLS+8P5/TBmjHcibfp00x/tkEOMGPdapF1yCXznO97GFIY2ItLcxmdEmtKDV0q2k9ZFP6lOCx0ooSTS7IhQSiSgrL8poWyCZUR8jan3OREboCRUgEhz2EmzBVcq3Zk+aMAmOg4SW4hFk73e4wTNzWlO2tbnYdh0iI6B8tmg/MZds9rn9GwHhYg0MILFjdGd+eYMBfcmWa+vN2UgYnl+zdyaGqoQJy2ZdEcgat2/k+Zm+m/TJvOZZk6BNm6cu7Ms2Lz7LsyZY14HArB4MXhZFusvfzEld2691Z3PV9gzEZHmNlZlfh+DF2n2wIGkKkykqWCJY33STJ+wfqaEsgmVEXZBpMWDdSZ9nDlvZypuJXQ2Eo91OS7SUunOWBaRFhkDyU7iwfpe7xks3d3m2uNxTOmN7S/CSKvgXSAKZTN6iTQnY8PuiTSnnbSmpvxzhkKPSHPDSSsvzz/Lg1sirRAnDdxJee7caboWZI7sBHOvQyH3nbRsAnH8ePedtF27YN26HpEGMHs2rF3r7ohWm+ZmuOwy4xq2t8PDD7sfU9gzEJHmNspHZ3cQP84NHEj6coiUzNBBZ9OdJRHLLgnkGXIHECwjpFwQaYG63P3RwDhpwMhh9Y6NLLXFXiSizbyhWUWasRliPvMN5pRQss9TUoKZeqqzEUamVRitOCSV7rRFmpOOVjFFWiGxbRHntJNWSKq1mE4auDN4IFeNNDCCddSovVekvf++WaaLtMmTzT9KXqRa77rLTGz/8MMm5frb37ofU9gzEJHmAV3JMH4HnDQ73Zn0FeikBUoojTrnpKVEWrCfb89gGUEaAe1on7SIrz53+Q1IibQRw3Y65qTZ5ymPbIdke3aRFjUiLZTcilLOiTRbcMXjQPM6s2KX/AAzeCCxFdo2pwSNU4MHurvNdfQSSqt+CU8dAw8Ph/p3U5uLJdLcTHcWS6TV1fVMHp8NN520fCINTMrT7XRnLpHW0OCsS5zJe++ZZbpImzTJLD/xYEaqZcvMtc+fD//2b/DCC7B+vftxhaGPiDQP6ExGCCjnnDRdoEgjWEKpQ33Sejlp/nj+g0Nl+OgmFm51TCACRHx1ufujgUl3ApWlLoi0UJbyGzbWaE+V2EIs5tyXiS24TH84u5Bu2nxT9uCBurdSTppTIq2Xiwf8f/bePDiS7L7z+7zMysq6DxRQuNHnoLtnhnMfnBmSGpIiRUohKiRRseLK1lqWJXm9kq3YdTi0stfeWK3WIXsl67Alh7S6pbBI6qJWvI8ZknPf0zPdPX13oxsNNG4U6r7Sf7zMaqAbqMp8mYUZDvGN6MCViVeFrsr3ye/volmGl/57qK9IR+/q33WOTSTeXkjrR7izF6RlMv1z0gYGdg619tNJcxrZ7gRp/XTSuuXDOd/rZ17a8ePy9TS56e29f7/8uBuw9OabN1qP/MRPyI+f+1z/13VUq8Hv/m7wFeJ78q89SNsFNS0TXQTnpPVsZOtIjxOPBBPurFZlY1zAlZMGkA5oNJTzO8K4C3cOxIODNGfttLHNtAFHdriT6vW+QFoigWy1cXP7j6x9279+InBIc1y8DigtvwBWE+79dQmH81/rHBt04UC7fVNV6w7qV7jTrZPWr+rObmv300lzIG1kZPufDw/3D9KcfLidnDTob9jxzBk4enQrHDvzd/sNaa0WnDx5A9L275eg7vSN2w39p/8E/+JfwK/8yu6tuSd32oO0XVCzHcHQgnHSouFK70a2jgIsHKjVIGE6OWk9nDQH0mIBQ5rlDtKy0eCdtIRm72DR8VsPCmflWKqAIW1LuLM0I128ze0/jJT8W5evdIAmKFi6BdKWnpEfBx+BkQ/D0nPQkAcFHe68xcXbQW93uLNcvjGQPMi1d8pHA/m3Noz+QNrKinytRXZoweiEO+3+yYGqW6h1NyBtdnZrfzaQw+xHR/sf7rxwQV7jNjfxnZ6W4LgbarXgN35Dfv6bv7kXZn2naQ/SdkEtTEIBOmnCLaSFEsTDweWkxSOlzu/tKrtFRya2FmhOWqi94ionLRVZplYLph2Fs3ZUW9qyxhYJAWZetuHol5NWntka6nQUm4Dy1f47aYtPQ+qY/PuPfK901RZk37agIe2WtXdQJCKBJchwp9Peolcj3X5NHejlpAnRv6kDy8vdAXF4WLpd/XAQHQB7u8KdO4Va9+/vP7Q4RQtvF6T97d9KUPyt35Kvr1/+5d1Zd0/utAdpu6CmFcHQg8tJE4ZbSIsTDZepVv3f+m510lyGOwN00iJGBc2qdnfSQkkQIVLmcuc8v3IgzRRLYGSkY7adoiNQ6U+4UzpplyG+79aDYpNQvtJfSLPasPgMDD0mvzn4GGgmXJfDDR1IC8phcQtpQgQ/GqpYlKDmxkmD4CGtl5MG/Zs6sLLSfe1+jobq5qSlUvI90C8nrVSSr6HxbUzy3YS022+/8b3paTlHdDdyxH7jN+DwYRnu/Of/HD796f4WaezJm/YgbRfUxsTQgnPSNLeQpsfQhIXV9E8rTnWnhQ5auPvBfYC0bNwZCdXDZjBzJMJyBwsi5On8jrC1tL2L5igy3L9wZ6wJlVmIbeekbYW0voQ7C29BY+0GpIWiMPRoJy8tmbzR0y3wtR1ZbXjz38Obv7rl2KCHrPeaNuDo7XLSoH9OWi9I6+fUge2mDTgSor9tOLq5ePv2ydYY/ZrwABLSDh7c2sR3elp+7PfM0nIZnn8ePvUpWVX8vvfJm5STJ/u77mZdvQqnTu3eet9p2oO0XVCLCOFQ1bfTUK9LJ00Lu3XS7ONa/qnBKRxo64nuXT4BwsEXDgwkegxXd2TmSBjBO2lGexnMwZ0PjAz3LdyZMq5JSNkp3FldIBGtbTnHr7bkwy0+Lb8YfOzGAUPvh7U3oFXtfz5cuwHP/RQc/zfwxr+F6mLn2HQ62HCnW0hzwqFBQlqrJYHz7XTScl3uQ/o5deDaNbm2aW7/87Gx/kGaA4g7OWmNxo2iin5oc2WnIwfS+h3yPH1aOuDveY/82mlB8vrr/V13sz75STnU/vOf3701v5O0B2m7oLaIYIZqvu/GarU20XAV3S2k2VWgIgBI67Tg6NV+AwJ30iqVTZDWLScNIJwjqq90zgtibQC9udQD0kagukA81g4+Jw07c3mncCcQ12a3nONXW0Bp+Xn53JOHbxyQPAxYULxE0u5tHFRe2i2QdvHP4eKfwaGflrlwl/+/zrFBhzudfKu3IydtfV1umG+Xk+YmJw3656RtB0mOxsf7l5PWzUnrdxuOWk2C0s2Qdth+q/Ub0k6ckB/vuEN+dBy948d3PidInTwpnTzThB/+4d0dw/Wdoj1I2wVZwiRiVH0n8Lfrkhh005uTprWDc9J65qMBhBJYaIGGOwfibp20ASJa8OFOrdEL0obBajKUXg083Blp2e0/tg13ypK0UP0q4XCf3KziBUhOb3VQE4fsA8/3H9IWvgXmEDz0B7L9x8U/6xwbdLjTeQ7JHkM1+gFpvaYNOMrlpOsVZJWlZfUOd+Zy8iXQLydtp/5scAPS+lFZ6kDadpDY74a2589LB3VzPhpIUJqY2B1IMwy4ze6RrWnSVdstJ+1P/kTOSX3pJXlj9Ed/tDvrfidpD9J2QW0RIWJUfZfrW025+3vJSQMQAUBax0nr1SMN5JXcSJCMbAQY7nSRkwYQzhEhWEgzDBA1FzlpwHB6PlAnLRIBreo4aTvkpAGUZBuOvjhpxUsQ37/1gN2EtKVnZesPIeDAT8LKy7AmLYBUKthwp1tI60cj3V5zOx1lMnKeZJDJ3aWSDOt1C3fqunxszuMMUteubZ+P5mh0VKZ79GvtRGL7/3MH0vrlpF2xe2RPbfPW3o0KzxMn5DrGpnqou+6STlo/gHizmk05/ur7v18+hsceg2ef7e+a34nag7TdkGZiGjXfTprVkFdl9y045HG6FZyTphkuwp2ACCXJxDcCa/+Rz7jPSTOsZcAKBNKqVcimKjKvr5uTFpUdQPPJ64HO7uz0SDMHt++PZztpVGQbjiAhTdfBNJpysHxi/9YDInnZL2+jz5BWW5ZzSwffK7+5/1MgNLgiJ1DvCqRZFqy+Jofc2zJNubEF2XrErZPmhGKDbIXh5Lj1WrsfkGZZ0p1zwqnbaWhIfuxHLt7s7M6h1mhUrt0vJ81x8W7u0Qa7B2lOqNPR3XfL12K/Z5Z+7WswPw8/9VPy60cflYUS/Rw9tlnttpyy8IUvBHND3y/tQdouyNKCcdKwnTTXzWxtJ00nGCctGSki3DhpAEaSVCyYkVSVCgylV0DosoFrN5k5dGrEzHJgTtpYzt4ZeoU7gVwiWEiLxbAb2W5zqw3S2TQyULoSOKQlEiCq12Qe2M1OmhDSTdvkpAUdao3HgaXn5ReDj8iPkTwkDsOaTJoJetrBtpB28c/hi/fCiX/f+ZYQ8ph+OGm9QKkfTXzdrj0wEHxFa7ms02x2d/Gcn/VrsHy3fLiRkf6BQ7d8uOlp+f/Sj+cM8vpy8eKtodbdKh547jn5PvroR+XXjzxy4/u7oa9+VbYd+YEfgGPHgr2OBKk9SNsN6dJJ8w1pTgGA27FQNsyFAoC0ahWS0WLvaQOdtROkY8GFOweT9tzOnpWlMlaUia0FBmmjOaeRbW9IG4jN02jI0FEQa0ej7NzI1lF8suOkBQlKchzVJXuN/bceZEOaE5YMylUqlWRuTCSCDHUKDXIP3jggfTusy3BnIiHDYEF1/negqxNqLV6El35ePoZT/ydG64aNFLSL57WyNEgnzS2k9cNJKxRkrK0bpPVzZunsbPd8uH6Ow5qdlc9tu6pWp2jBCYkGrVOnpIt5s5PmVHr2u3jg5ElZqBCzt7P775f5ac880991HX3mM/JG63d+RzqlTzyxO+t61R6k7Yb0SCCFA53cslDU5brBQVqtZhcOeHDSktEgc9LWOlWj3de9UVkaGKRlXUCaPRoqY17vnOdXHSetOg/RLgk70Ym+5KR18tFge0hLHoLiReIxOdohcBdPICEtc9fWm4P0HbBxDlq1wF28jQ3p4GnOlfHF/05+fPxL0Kqyf+NG0UIqFWy4021OWj+dtG6gBP1x0tbX3z5Ia7d7O2n9HCx/9er2oU7o/6SFmys7HaXTMhfvjTf6s+7m9TevHY3CffftTl5aowF///fwiU/Az/yMvM5+6Uv9X1dFe5C2CxK6iRmqUa/5y8QUnp00ubEZWkA5aW5bcACEkoEWDqRiBZeQFvxIqqG0E+7ssosIAeYQqbCMiwQR8iyXIRlvyrwsM7/zgZuctMAhreOkbePkJQ5Bu0aiD+0/EglkDtjyCzdCnY7Sd4DVgo0zgbt4GxubQp3NimzYe9t/C6MfgUM/w2j5H6Eu6SjocOfqqtwsduoV5ujdlpPmOGmDXe6B+gVp3Qa7O3JmlvZD3fLhdgPSDONGu4/NOnSov5MWGg2Zb3dzqPWRR+DFF4OJRHTTN74hX8c/9mPy/fahD8EXv9j/YgkV7UHaLkiEImiaRb3m75WnWR5z0uzjgoK0WNibkxY3g8tJS0UKvfPR4EYj3QCdtKGkCycNwMwRC8kdLAhIq1Qgn7F3z0gXSIvKhrbpZK0P4c7LEB0DfRtysCs8zcZ5hOgDpJUvQ3MDBu7fekDavv1eO9EXJ60Daauvyny8wUfl15M/jEYLVl4Cgg93btsCo3S5MyPVUT+dtF4unuOkBTEX19H6egjo7qTF43IzDRrSurXfcDQ8LF/b/RjR1A3SRmQtUt8g7fx5GW7cXNnpaGoKZmb6sy7A2bOyuvNmF++RR+R1r98u3mc/K9/n3/d98uuPf1zm5+3WvFQv2oO0XZAIyQ2u6TPe2anSdOuk2ceZetn3RbVZb2CG6u76pIEc7m4G56Ql3ELaJictKEgbdCCtV2Xppka6QTlpo1n7Fr4bpNkVnuPZ2cCqlLY4aduFOkGGOwFROt8fF694QX7DaffhKHVEFpGsn+ivk7bsFC08LD8OPCA/boK0oKs7t0BSuwXf/AR87XGY+evOt/uVkxaL2XmAXZTNSkAL8nm7yUkToj+TFrrNDHXUr5mltRosLu4c7jQMuXa/IO3qVZic3P5nU1Ny3X45WjuFWo8dkx/7PQ7rq1+Fj33sxuv9Yx+TH9+JIc89SNsFaYZ8JTTr/ojlBqS5zUmT68bMsv9WGE17B3ZbOGAkiYcDhDTz7XPSBhJLds5ZqPvB5gARIXeRoCBtOG1Dmjm084F20cJQaiHQRro9IS02BSIEG/2CtIvyG4kDWw/QTTnxYL0/TlrKeZktPSenPDj5gOYAFX0Mll8Egg93rq/fNOng0l/IKtbYODzzE53xXJGI3MCDDnf2ykeDG05fkHlphYKBEG/PpAU3kNavcVjdxlE5GhvrL6TtBIhTUzL01682HCdPSvA+cmTr9w/Yb/Xz5/uzLsj37MwM3Hvvje8dPCirab/ylf6tq6o9SNsFaQE5aZplU4fbcKcQNKwYcbPkG9K0tr0LunbSkpihKo1a09/C2KFWY8OTkzaQCM5JG4gtQdjFDhbOESbYcOdg0oWTZv9sMLEYKKQlEy3Z/uPmHmmOtJCEmOKF/jlpIiTDuTcrfccWJ60v4c6l5yD38NafG0c6kBa0k1YobALEZgWO/y8w8CB8/DUZaj/5fwByc8tkgg939spHgxsgFWRe2vq6QSYj+/J10+Bg8JC2aI+BHepyD9SvcVhuQq1jY/2ZG9psyt/bzUmD/lWWnjixtbLTUTIp3cN+QpozzP1mF+/BB/sfZlXRHqTtghwnreXXScMZJOnSSQOaVoxY2L+TdgPS3DtpAJrlf/esVCxiYZdOmh4BzWAwFQykVauQjvQYru7IHJCD2LECAZZyGXJxexdxAWm5uHTSgkh+LRZhfMDpkbbNzFBHsQmoXOufkxbfB9o2u3f6DiieIxWX76nAw53la7L1idNE11YhfFR+v7pAMimfs9+ZvJ3fvRnSrn4Oylfhnv8gC1bGvh8WvtlpqJtOBx/uvAXStnkh9ctJ61Y04KgfkLa0JEHhZljYLCfcGbST1q2RraN+OWlzczJsvdPaDrz1Ky/t5MlbIcnRoUNw4UJ/1oUbodabixaOHpVQ+k7rl7YHabugUNh20ur+SCkkHEjrkTiySS1igYQ7dcsJd7rPSQMIWf53z3azhqE13EGaEGBkGEgGF+5MmT3mdjoK59BoEDdLgbXgyMYWZP5Vt3FYdig0E5G7iN8Qs2XZkJa5JL+xU7gTZCiwb5B2ARIHtz8odTtYbdLamc45QagDaU4+Wm4rpG0Ydnxm+cUOUAUFiFsgbelZmVOaf1x+PfwhaKzLYgaCd9JuCXdWrsPfjcATH4eVVzrf7oeTViiEXIVa++Wk9QLEfuWkXb0qP3Zz0kZH5bpN/wGJbdd+OyBtp8pORwcP9tdJO3FCpgwcuCmLwsmHO326f2uraA/SdkF6WEJVu+Fv9wyJCo1WWDbWdKmWkE6a341btzw6aSHppAUBaYZlJ/64gTQAI002wHBnMrwEEXdOGkAuuex7bcuSa2ciCxIQu/2fh6IQSpIyJaT5haVaTd5l5+P2lTy2Q0wEZOVn5RrxeDDuIWzOh+sCaXbRQpxLQB+ctOUXZah14N4tPy8a0/L/ot+Qtvw85B64kQc5/EH58fo3gF1w0k7/JtSWZAuUr7y3kx/YLyfNLaStrgbnXIKEvm6hTpBVpel0f8KdsdiNat3tNDYm34tBu3hJh3o9AAAgAElEQVROGHOncGc8LqG9H5A2MyNBbXp6+58fOiQfX1ANqm/WiRMSyG4OrzuQ5oRD3ynag7RdkOOkWU1/pGSICvW2+1AnQFsLxkkL4dFJs8OdhvC/g4WFR0gLZ8jE1gNr/xE33OekAQzEV3xDWq0mQS0VXuge6nQUyZM0gunR5sBWNjovP+naSHcMWhXy2UIgkOa4eLlUQfaHu7lowJE9JstsziBEME5as2lP1kgi54UmDt7iWre0KKSOwcpLndy1IIoHGg3btU0BrZp0zDa7eNEROWnBhrQgnTTLugnS6utw9ndh8pPwsZeg3YCZzwL9ctLcQ5plBQuIS0u9nTToT6+02VnpZHUbotKvXmm9nDToXxuObkPlQUKaZfWvT9tOodbDhyW4vfVWf9ZV1R6k7YJCpp2T1vAZ7tSqNFQgLYCcNEN4LBzoQJr/3dMzpBnpQFpwNJuyx1xYq7jOSQPIJZZ9g5JzfsJY7N7ItrP2EIlQsJCWNudBM7s3EbYBbnzgWiCQVq/Lv/t42qns3MFJiwyBZqJVZojHg3Gztszt3DgnK0i3U/p2KJzuuF5BQJqzdiqFBLR2/ZZ8OIY/BAvfhlY9UCetVJKQ2IG0s78HjQLc/ksSkgce7LQAiUalsxQkKK2vb5OT1ihCa+tdVj8a2nqBtH6EO7uFOqG/kBaL3VRNfJPeLkg7aL/l+xHyLBTk+tuFWsNhCYh7Ttp3oRxI8+2kaRXPkGYF5KSFhddwp4Q5U/O3e1oWmLp3Jy0Z8Z+TJttv2JaB6aL0zXHSEv6dNOf8uO7eSYtqwUCac37KmJcOTrdb/ajcRUbT1wJxs5zfMZKwIS2+g5MmNBmGLc0ENmT9BqRZUDx/a382R4lDULpEKtnccp4fOaCXSiGrSuGWylKGPyTn9668GKiT5vQe67hZl/5c5sI5od6pT8LKi1C63GmVEZSTVq1CtapvddLe/FX4bBI+HYWXfqHz7X4MWV9c7B3uBJmXFrSTNjfXvfUH9BfSJie7v7WnpvpT3emA304u3iH7bdeP4oGTJ+XHnYoWjh7dc9K+K2WYTrjTHymF9QpNyxukoQeTk2ZoXgsHpJNm6hu+qg0bDUhGvDtpqYh/J61SkU1xge6J+45skBsMICfNAaWoWOjeI81RJE+EYJ20uD7f6cG2o2xIG04F46Q5sDUUcxrZ7uCkgRxVVZ4hkQjWSRtMLEKzuDOkJQ+D1SQXkbtNEE7aLZAWm4TYTTu400x37TiZzA0HzK8cVyyTAeprsH4SRj5844DJH5UfZ/5GPowA53feAoitqsyHy70XRj4K5/4AqrLCOWgnrVqVr7e3y0lbXLxRlLCT8nk5RzZoSLtypXuoEyTEra8HW6DirD00JF3Z7TQyIn/WDydtpya6jo4duzEN4Z2iPUjbBRl2W2Or5Y+UTL1CE4+QFgom3Gnqai04kpENXwmg1SqkovYOFnLvpMXD/nPStkCa0SUu0FlXQlo+499JK5fBNKoy1OvSSQu3FxGiHZiTFhXXITLS/WA73JmLz1Eq+W//4UBaNnxRQnk3OI7v64uTlo/Z7c53Cnfa8JYJnd9ynh9tgbTl528NdYJsdxJKwPrJQEdDOb8jk6HTA27L+slDkL0Hrv4dEKyTdgukXf4rWbBw96/C/b8J7Rqc/wP5kAa3nhPU2ttCWnvrLp3Py+ccVAd+t4AYCklA7IeT1gvS+tUrbWZm54IFkO7ewYP9cdLeektWdu7fv/3Pjx2T/8f9rC71qj1I2wU5zWytlj9SMkMVWpb79hsAIuQ/3GlZENFLtC3NffuPTZDmB5YqlU2Q5sFJixolGj5npVarkIk7TpoLSNNNCMXJp/3npMmZoS56pDky8whaZGJrgTlppmWHO7vJSEIoQS56jXYb3zcDDmylNbuys1s8JjYFlWukU41AnbRc2L5Cd3PSgATyuCCcNAeUsvE1OeXh5nmlIP8W6dth/VQnlygISHNy29JpZOsPBOQe2npQ/oNyHFa72T8nzbLg9G/LHnjDH4T0MRj5Xpkj124G7qRt28h25m/gq++DzyRg6YXOt52Gts45fuU8Bzeh1qB7pfVqZOvIgbSg89KuXOm99qFD/QGlS5dg376dGycfPSo/vpNCnnuQthuywUb4cNJaLTBDVdrCm5MmjLhvJ63RgLhZpG4lum+am6XHsCxBIlL0tfYWJ81Idj/YkQ1UIcvf7unZSQMI5xhKBeOkDaU8QJp9TD6A0VDlMmiihdFa7O2kAUTHyJhyF/Eb8nQgLS6udCo4d1R8CrA4kL8aqJOW1s4BYufK0ugYaCbRhnTcggx35sJn5SfJI9sfmDoGhRtOWhDFA1uctKXnJCTdfEM0cK8MRRZOB+qkObAyOIgsmFh9FaZ/4cZ1ZvoXZFPfa18kFpNhsKAgbcvaABvn4alPyvCqkYKX/4eONRz01AEH9tyEWoOGtOvX5X7Sy0lzfu5UggalmZmdiwYcHTjQn+rOy5clpO0kB9LeSb3S9iBtN6RLJ0201WmlVoNouELLM6T5d9JqNYhHSjQtl6FOkCOpSPh20hxIa6O7n7RgVyOGhb8dzHNOGoA5EEiftHJZApf8ne5y0gDyaf+QVipJQBS0eztpANExkqG5zrl+5MBWuD3XvfUH2JAGU4MzgTppceu8zAmz37e3SGiQOIheOU8kEmy4M605kHbb9gemb4fKHLmUfF0GGe5Mp9qw/Nz2odasXUSw+mr/nLSFb8kvJj5x44DRj8mb3OtPAME2tL0F0s7/gWwc/eEn4J5fk3+Ly38FBN/QdkcnrXhBjmLbpKCLFpzwZS9Ic8B0fj64tdfX5Wu9l5M2Pi6vBUHOxoXekJZOy5uVy5eDXdeP9iBtN6TZIcK2Oq3U6xLSvDppejhGONSgXlUP/ckB50WauCwasNUUSZLRYCCtScq9i2c7aabwt4NVKpCN27tRuEsbii1r58gG0CdtC6S5CnfKq30QTlqpBCMZ+8rcq3AAIDpKQg/OSQvpDYzWUm9Is522iexMoE5apHm+0yx3RyUPw8a5wIasO78j3joDiJ3XT8veAXlT9gkI0klL62ehvro9pKWOSlhaeYVsVv6tgsjP2gJpS8/I6Rab/9/1sGwBsvRM57i+hDtbdbjwxzD+g7Jg4+A/g+x9cPzfgGV1YCqofLhbnDSrDad+Hf7xGHz5ISjfmGyez8vjgxj3Bu5mhoJsSZHLBQtpvdpvOHIeW5AD3isVCbvdIA3613pEVXuQthtynDTLv5NmaR4hzZRD6Vp1dWqo1SARKdIUHpw0oCWSgeWkNTWX+WjQcdIiegBOWnyNloiDZrg7yRxgIB5MTponSNsU7vQLSuUyjKQdSHPnpEW5RhAzS0ulzc+7x9r2JISRVLBOWqhyDhI7FA04ShyC4nlSKSswSBMCjNpZ6RDulPuZkm3RB3TZSyConLRoFIw1p/XHNpCmhSBzV8dJc87zq+VliERamCaw+AwMPnLrQUOPweor0KyQywUHSktLdFqKcPXvoboAh39W/lBo8vPiedg4E3j7j1uctLd+E179H2H4w9Aswbd/VDY1to9pNoPri+e4gSMu3tojI/2BNDdOGgQLaQ549YK0ffv2nLTvPgmNetNAs9RppVaDqKEOae26+u5ZrULcLNES3py0lpYkESkGE+70Amm2kxYNrfu6+3TCnS3dZT4aQDhHKhJcTpolwp12Jl1lN9sdDijcOZy2r+Quw506VTKxtUCctNHMnLu1Q1Ewh8jHZyiV5PgcP9rYgGxiHVFf6u2kJQ5Bq8LB0bnAwp2pFIiNs5DcYV4OSKdJj5BoSUgLyknLZIC14xIOU0e3PzB7L6y+RjYr31RB5KUtL0M63YDSFajMwuCjtx40+KicerDyUqCh1qUlCWihEHDpL6QzO/LRGweM2p/PfYVMRrbCCNLF0zQbEC1LFkcMvR8e/zw88qeywvfM7wA3Qq1BFS0sLEg43ZIPVzgNT/34lmIJCB7SHFDq5aQ5odggIc0Brz1I29O2arRMNB9OmhPu9DJcHSBkQ5rVUN+5q1XppFmaNyfN0gLMSdO9O2mZ2JqvXDwH0iy3RQMA5gApc4VKxV9solyWkwus8KC7MK8WAjPH2EAwhQPjA17CnXZD2+xcIJB2I9TaI9wJEJ8iF53Bsvz3h9vYgPcc6FHZ6ciu8Dwydj4wJy2dtuQ4qp3y0QA0HVJHMWsy3BlUTlo6DRTekgUL2g6lb9l7obHGePoSEAwsra5CItHshDMZ2sZJc9y1xacDL1oYGkKGGhe+LaFs83NPHJCO6txX0HXZHy5ISMvlJKix8C0onoND/418r0/+iOyJd/nTwA23Lai8tOvX5doheywsq8fhax+AmU/Ljxf/snPs6GjwTpquy9/bTU4T3yCLFrxAWqEQ7GxcP9qDtF1SvRVBx5+TFjGq4NVJC9tOmg9Iq9Wkk9bWvDlpVii4nDTX7Teg46RlYmu+Q62Z2Jr7yk6AcA5da6G3/VeW5hLLCDeTDhyZeUYywThpE4Pz0sFz0xfPziEay/hvaFsswr4hl04aQHwfGeNy51w/2tiA28bsW/34/u4H2xB3aPhcYE7avuElaKx3d9IAUscQhZMkk8FsJGtrmyAttUNVKXSKB0Yjr3bOC2LtZLIhW3/oURlSvVmRQfm4lp7pOGlB5GctLtpu0vopaKzJsOrNGv0oLDwBrTqDg8GGWjuhzvN/KK9vU5+8ccDUj8mWJ8VLfXHSOk102w148vtBGPCRp2DwYXjuv4KyzDEdGZHtOoLKh5uZkaHMLS0wipdkf75Ni0SjEoqDdtJ0vfeUh361HlHVHqTtkhptEw0fOWnVJkaoKUM8HiRCtpPWDMBJczttwJYVCiYnLRnZ8AZpdtPbdMzfaCgnJ02Y3pw0ABN/V/NyGXLJFUTExeRpR5F8INWd5TKMZV1MG3BkO2lj2WAgbXLIi4s3QUK72jnXjzY2YH/e3hViPbKq4/sAweTA5cCctNsnz8gvujlpIMORpcsMD1YDC3cODVRlf7adQp0AmfeA0MiJ4CBtdRWSyabMR8s9tHPu5+CjsPQM2axFo+G/QAU2ze1cetpeYwdIa5Zg6dnAixYGB5EzUq/8Nez7FNjXakBCGsCVv+6Lk+ZUbnLtCzLM/ODvSUh9+A/BasKFPwIkpFWrwVVZ3tIjrTQDX3lEFkt85RFYe6Pzo/Hx4CFtfHyTg7iDHKftnRLy3IO0XVK9FUEX6rTSqEraEB4hzXnji5Y/Jy1hFt1PG7AlwsHlpImwB0jTdOpW0reTVq1KJ03zAmn2/M6o5i8mUy7DYGq5M8XAlcwhhpIBVne6cbIAovKKH0TRQrEIE7k5+bx3aoGxWbExwmKDuFn07WhtbMBEbla2Yeg11F4PQ2SYkdSVwCDttpEe7Tcc2aOyjk1eCizceWTsnAz7dYO0UBTiB4hbEiYDg7REFdZev7WB7mblHobaMlO5S53z/KrjZi0+Laujt5swMfxB+XqY/0rg7T+GhpChzlYF9v341gMSB2RD45nPdiCtL07ahT+WN0NjH5dfJw/DyEfg3O9Du9UpLggq5LllXmmjAE/+gJxHe/d/kEUaL/xcx1HrB6TdEupslm+ZLrEHad+larZNQj7Cna2aIqTp9t2ZD0hzCgeE4c1J0wyZkxZEM1vN9ABpQFOkg3HSYmvoUe9OWjzkz0mrVGAgvgKmByfNHCQb819ZWi7DUNLFSChHoSSWZpJPL/h2szo5ab3abzhy8uEyc4E4aWPZWbtZ7Q55WZsVm2QodiWwcOfBoTMgQpDY3/1gu8nu9PjFwKo7D+ft7p3dwp0AyWnMWrCQdnjkPLTrkL5z5wMz7wFgMimHL/rNS7OsTU7a4lPSRdou99NIyZFYyy8ECmkdJ23hW9I9zD1860FTPwbLLxBuzpJO98FJqy7A7OfhwE/KnFZHh38Oyldg7ot9gbROPtrp34b1N+H9fwN3/Gu461dk2HvuK4AsHugrpF1/Ev5mED4dkVMm6vLNlM+Dae5B2nedmu0IIU2dVpo2pGnh3XfS6tUmkXANYXhz0jQzScysUKuqT6utVprEI2X0iEdI0zIB5KRZMtzpZiSUI9v5ihn+bvXLZYts3KuTNigrS8v+yhxLJRhKeHDShJCh1oCctOHUvHtA3BRqDcJJG0ldhWiPUKej2ATZyFWqVXzNpwW7wWfmrASwXu1e4hLSDuQvBjaSat+APQenZz7cEUTxDOGw5RvS6nV5Q3Bb3l7b7gG3reyfjUQlpPl10goF2edtKj8vG8hul4/mKHsfrLzM4KDF8rL//Kx2W+a2SSft27IP3HY33yPfKz8uPt3pleZXTugynwcu/oUMbR78qa0HTXxCvv8u/EkHqIKAtHJZrj0ygvwjXvgT6VQ6z/Pgfy0rbN/438CyGB+XQBlEP75mUwJfB9Iqc/D0j8s2Pkf/lYTD134JkMUcU1N7kPZdp6ZlEtLUiaFZl+fqhrfqTgfSNEsd0ppVufNqYW9Omh6RrSNaNXWLw6rLnTfkEdJaWppMfM2Xk9auFdG1tru5nY7syQRJc5WmOpvSqpUxQ/WOM+dKZg5da6O3/O2etUqdVGTVfU4aICJ5xgauBwJpQ4k5D6FWu2ghey0QJ20wNts7H81RbJJ06Apg+QbEQgHy8csdAOuq6AjoEfblLvh20up1uXFPpN6SG1Yvtzw1jWiVObrvmm9Ic87fn7Vz8bqFWsMZCcXam4B/J80pADias6tKt8tHczRwH9RXOZC/TL3uP/dxdVWC2uhQWRYH5D+w/YGZu2QkZOkZhoaCcdKc3zE8DFz7R8jcLWekbpZmwNj3w/zXGRluAcFA2pb+bIvfluHNzYCoh+HO/1m2H1l6hvFxyXJzc/7XvnZNjsLqQNpzPw2NDXj/38K9vwZHfhHO/b+dqRfvpIa2e5C2S2paEUJC3Ulr1xWdNDvcqbXVIa1dl1cl3fQGaSEb0tq+IE1aBV6dNCuUJhUt+II0rWnfrnuq7pSQNpDw1yst1LZ3obC3cCeAKfzFZCLYt+xuxlF1ThpmOB2Ek2aRjXkPdwblpA1EZ907afFJwlqRdGzd19qtltz4B8yZzqirrhIaxPczlvIf7nTOz0dO9w51Qsdpu/vAGd+Q5rhhE8kzshCjFyCm7yTRfHPLuapyIG889qr8ew7cu/PB9rD723KvAP5Dno4jNj34vHSyht6//YGaAbkHYfGZwJw0B9JGhqrSPRr+0PYHjnwYGmtkrVcxjGBAyQG9kRFkLlwoCZM/uvWgfT8un/fVvw+0oe2W/myFszD3RbjjlyFzh/zBXf9OVnS/+j/Jh/EO6pW2B2m7pBYmYV3dSWs35I6vK4Y7ddQhrWU3wtVNb+HOUNS+6DbUdzDRlJDmqXAACWnp6LqvcKfmOFJu53YC6CYNK0o2vuoL0sKWfavvyUmzIc1nZWlEOIPdvUBanqEAwp2iuY6pV92HO400lhb17aRZFtAoENGLEOsx1NCRPfFgMueveKBYBNOokghd7z1U3lHiIMPxC77DnRK0LLL6W92dLEc2pN0+ccY3IDqQNxo7B6kuoU5H6TswKqfQRMu3k+acn9PfkM+pW//JzHtA6EzEJaT5bcPhQN6B2LcAAUPbNPB1NPgorL7K+HA5ECfNcbMOpl+AVhWGH9/+QBvexMLXA2to6/yO0XwZZj4L+/7J1opWkDmA+Q/C1X8IFNKc3zExAVz8Ewnmm128UBymf166eIUz7NsnH6+f/SMo7UHaLqlNBMNHTprjpIVMNSdN9xHutBpy9zOiHsOdpt0pv+nDZrAhzVMLDoCw/8KBUNuBNA9OGlBnIABIU3HS5LEx3d+tflxXcNLMPIPxBUolfwk7cc2+krt10oSA6BijGX+d/2s1GEnbnTNdhzslzE0O+CseKBRgYsBe242TBhA/QM68SK2Gr8Kc9XVZdBEWG+4gLTYOepTbRoJx0jTRImdcuuFodFPmTkS7xpGx876dNAe0kq03OkUJO0qPQPoOhvRgnbQ835YhzW7Xl6FHwWpyz9RLLC35n6rhgN6o/k1AQH4HFy86Igs55oODNMeNm4p8W7Y1mfzk9gdOfAI2zjCVlcUsQTS07cwrHWvJXLjRj8kZrZu171OAgEt/2QmLOmOs3k71hDQhxLAQ4g+FEF+0v75dCPHT/X9o7y61iPhz0ppyxzciHiFNC1FvhTGEf0gLRbw5ac44I+ED0vSWGqRppoS0alUdGkKWGqQ1RJaB+IqvKsuoru6kJQyfkGaohTvDoXqnQkpVScPDzFBbIjbG+IA/J21jA8az9pXcdeGAdNImBq76crQKBZjKOU103TppB4jo62Riq74crfV1ODTsTFnoMa8UpAORvI39udOBQNqB/EWZBuLKSZPVnw8dORFIuDNuFgnXL0C6B6QBDNxHsvEyYPmGNHm+Rbz20vazSjfLnqN6bPAZWi3/YV7HSUtVnpRVq92iBCMfhsWnmBqvBuakaRpkat+QIc38+7Y/cPwTAGQ2PodpBuOkXbsmG+Smy1+ByjVZpHCzYmPyOV/6CybG5b4RZHWpqtw4aX8CfBlwsPMM8Iv9ekDvVrWFiRHyccvbVHTSgHozRsgHpNGQMSyvThqGDWkt9d2z07nfK6RF0oRDDeoVdTAOY+9CXnLSgKaW9e2kdfqsKeSkJcPLvirQ0mG1cCeAaanHZFotGIh6mDbgKDrK+IC/nLSNDRgfcNnItrPuGBaa73BnoQBTgzakeQh3AhzM+wt5rq3BgaGLW35nTyWnmUj5d9LW1uD2cTmDtGtlpyM7wf3eg28GEu68Y0JWivZ00gCy9xNqLjCamQvESZvMXUFrrUP27u4H29MW9iWe7ZzrRwsLkE3X0Fefgfz3dD94+MPQqvDI9LOBQdrQEGgLX5fwuVPfzfgkZO9FzH6O8XEJWH517ZrszyaufEZez8d/cPsD9/8XULzA4Yz8e3+nQNqgZVmfAdoAlmU1gVZfH9W7UG0RwQypA4PVlOcaEY/VnUCtHcPQ1CHNgSyvOWnYEwq0tvruGUIN0vSInN9p1dRtBlOoOWntkP9wZ9xQcNJCCVqWwUB8SblsvV6HgcQibUv3lotnQ1pEqENaqQQjaY/hTpDhzvQ1ikV1MlVy0rQQrfAokzl/4c719U1Omtt8uMSNNhx+nbSD+QtYCPcuXmqawegFihv+eiOsrm6GtGPdDwa5qScOcsfEm4GEOx+8ze5u7wbS7MKCBw6+4jsnbXERHp4+bq+9zRism5V7mCHtecB/hefCAnzvvS92z0dzZIdC7xl7msVFeRPlR/PzML1/BVZekY5VN419HJaf5+DURiBFC7OzMD5uyR5sox+RlaTbafJHQAsz2vzbznlvt9xAWkkIkQMsACHEe4EAWih+d8kSJmaopu5wtOSOH44qOGmtGKamntEtWva5HsdCOU5ayFLfwQzLhjQ7dOr6vJgNaT7CbxHdcdLSns6zDP9OWiK8Qq0V657QfLOEoNIeZDC5pBxqLZVgKLlIxcrJ0JZb2e064vp1tYWRCfSj2TmalunNvYyOETdLNCvqr7ONDRm2rIsBb6PXYpNMDgTgpOVmaIRG3E1ZgBu90ob8Q9qBoYtYkXH3ayePoIsWY6kLvhKrV1fhzslT1LRB9zdhqds5OPhWIE7a/YfesMHPRdsTG+QenH4zkHDnw0ccSOvSwNdR9l7M9nWG0/O+nbTr1+Gxoy/ILwa7FCyAvDlNHeVQ5gXabf+AOD8PH7nrScCSLl035b8HrBYfuP3ZwJy0h46ckKHOkY/ufKCRhKHHCK98lVQq2AHvqnJzFf6XwD8Ah4QQTwN/BvxCXx/Vu1CWFiFiVNV7Z7XVw50NK0ZYV3fS9LYdrvQKaaEAIE04kOZtbQfSaKjvYFF9jUozsbUbtxuFswwk/OWkpcxlKm0PLpqtGv4grVyGodQiNctDqBM6TlrSUL+SF4vSSauKke27v+8kuw2H2Va/5XactEbIpYtmS09MMDFw1XfhwNTgDO2oSycLIJymqQ0EE+7MX0QkXYCKI3t80qH8eV+AuLYGR8fPUA5N9j7YUWqa8dRZ1tb8ZdCvrMCdE29A+g53NyNGCmKT3L3fP6QtLsJdU8claLuB0+w9ANw99XogTto9Uy/LfEo36Qy5hxgxngesTj6bqubm4NGD35Bg3G0EGMhcPaHx4L5v+3bSLEtC2vsOyUkGjHaBNJAQt3acu4/MfWc4aZZlvQJ8D/Ao8HPAHZZlHe/3A3vXSZNOWr2mZqWJluJYKKBpxTBD6sSgWY6T5jXcGaNtCUKo56SZWoFyPeFuTM8maaaENNFU30VixhqVprdQJ4AwsyQiJapltXBQswmZ2Ao1BUhraDlyCfXRUI6TVtc8QpqdD5cK+4S0zDx1zUM+GnSqtKKo33I7OWntiDdIE/FJJgevUCioh1odJ01zG2601YweCMRJO5i/iHDjJjlKHAJkwYGfvLTVVTg4dI6KFzBOHcHUK0Tb/iyOlRWL6fxxd6FOR+k7OTYajJN2dOQ4ZF2EOqGTt3bPvtcCcdKmB1+RDXrdKPcwERaYGpzxBWnttlz7jvw3ZePgncKNjowkZO/j9sFvUSjg64Z3fV2ef3f+y7KCudf7zIa4H7jva98ZkCaE+EngnwL3A/cBn7K/tycv0iNomkWtqrZxa1al83u8qmnFMH04aSGrSLstQPcIiEKj2ojL8n5FRfQClabH9hvQCVHqLfUdLG6sUWl5hzQtKuGqXVVLnHHmdtbwUDRgq6kH46Q1Qx4hTTMoNXOkIwvKIf1iUbaDaBke8tEAIvL4ZMgnpGVn3eeEOYpPEgtXaJXV42+FgsVUbgY95Q3SRHwf+wYv+4K0UqHGWGbW3aQDR5E8TeIcyvuDtHppjYH4EpWQh7+53adtNHHaV46UqF4nHVl2V9npKHMn+7JvsbbiY5QIUFitMpE67S4fDWRuaHw/D0+/6mhsbq4AACAASURBVMtJa7ehsrHBcOw0ZO93d5LteD186HlfkLa6Cqa+wbB5ondFq6P8Bxg3nyccqvly065dg4hRYcL8Fox+X+8TsveAOcj7D3/lOybc+eCmf+8H/i3wiT4+pnen7HyPhmISh2hXqDZMb3lCtprEiBg+II0ilUbcWwjKVrmZJKy9DZAWtiGtrb6DJc01am3vkGbEZMK9VVODtHIZcsllGpp3J61tBJOT1jY8QhpQbufJp64rz7F0CgfappqTljLUIa1YqDOSuU4o4c1Jc9pwmC31hkqt8jIxs4KW8AZpofR+9g1e9uXihZszaJrlLi/LkRDUwod8O2lJzgFQ0b05aQC3jfhrpjtoupgXerPSdxLWayQ4r74wMGicRBNt95AGkL3Ht5O2vAzvmXgdTVjunbTMXViayUOHXvAFafPz8MDBlxDCgsFthslvp6H3o4saDx580Vde2rVr8Oj0M4SowshHep8gNBj5CO/Jf5X5ect3wYRfuQl3/sKmfz8D3Av08Cr3dLOE7YA1FDtP6lSpNb27aAAtESNqlJUdjpAoUWl4zEezVW0mMXV1SIuGNqi21Z20kKV2JbcsSEVWqaMAaXEH0tTclXJZOmlNzbuTRjjHQGKFUlEtZ6dSapJLrnjrkWarhr8h66WNOkOpJYSX9hsAoSS1VpyBiI8reUXeqhsZNUiLWuq33EbdY480W3pqHzGzQrOkvnPHLY/tN2y1owc5mL/gC9IGzbMAlL2EOyMjNKwER0ZPK1d4ttswkTwlv3DTwNeRneQ/Fn9T+VpaLsP0sIfKTkfZe9ifO0NhRb0AbGEB7j/wsvxiwKWTpochey+PTD/vqw3H3Bw8dNAuWOiVj+ZoSPZR+8DRb/ly0mZn4X1HnpIVzEM79Ga7WSMfIRm6zrGxN33n4vmVysSBMnBb0A/k3S4Rsp00xb5dmlWh1vSejwbQFjFi4bJyW4awKFJtesxHs1VtJeWoHUXFjAJ1FUizixYMxULkRgMysTUaCpAWTkhIEw3FcGfZIpdYph3y7qQRGUTX2jTKartnoyT7C4jIoOdz65o/SGuVZCxHT3gMdwpBoTnGQEz9Sq7XZfKJdydNhuoSmrqTFrXUII34fgDCDfUhg+mQA2kenDRApA7ZkKaewD8ck5BWDY31OHLzwoKSfoTpkTPKFZ6FAkyPvEW9HfcW3k4dw7IER0ffVG6cvLgId00ep2lFO7l9rpS9B01YZMUbagsjc8Lu2/8KNW3UUx9CMfgw9+17mcUF9TDv/Dw8fPh56ubhzmSUnooM0ozfzmPTT/sOd75v+ims1F2dCEtP2e1JPnD0W297yNNNTtp/FkL8g/3vH4HTwOf6/9DeXRIh6YI162pOWggfkKbFiJll5fExhlai2lJz0urtBJGQupMWDxeoWwqQpukUa0lMoQZp1Spk4ms0NA+9wmyFYhKu9JYapFVLRYxQE8tLI1tbelTCVauslt3snKfHvTtpzdAww+nr6vM7HTcr5dFJA0rtMUbS19RvRJpOI1uPOWmREZrtEJmwOqQlhMdGto7icnZNtHVJee3ByAUarXCnQtatwgOHiIarNDfUds92GybS51hrTNIWLlt/2GpEpn05aSsrcGz8FAWOekvhCEUpWIe5c0K9eGBpSVZ2buh3eiuGsis8x2OvqS3MDSetnnDpojkaeJBouEKkdlJ57fl5mdcm3LpotvThR3jvbc8xN6ce0p+bbfLI9LNowy5dNID4fuqhST5w9Ftve/GAGyftPwK/bv/734EPWJb1S319VO9CaY6TVlNz0kKiQr2lBmmWJp00VUiL6EVqypCWJGaoQ1rCLNBAAdKAUj2NqalBWqXcJh1dp6V7d9KcJrCqkNYoKjSytRVKSEizqoodN6sydGYoQFo7nCcbX6NcVEtK0+oynhLJeHTSgJoYZSyjPhoqise5nY40nbXaGLmIOqSljRmZymB6dC9tSEtq6k7acOIiK/V9nnNdjax0gUIVtfysQgFuGzlLwXIxiuomWakj7Bu8zNqy2rV0ZQWOjr5FNeyige5NKofv9AVpiwsWd0+9Tj3moWABIDZFuZXltsFXlXOklq+XODZ+Cn3IZT6ao9yDAIyEX1JbGCgvzzI+cI3QiMt8NFti6BFyiRXa62eU1w6XXydhltyHOgGEoD34Ab7n6De5etXfPGK/cpOT9s1N/562LB/JFzdJCPExIcRpIcQ5IcQt4CeEMIUQn7Z//rwQYn9Qa++2NEM6aS1VJ80PpOkxYmaFakUtNBEJFWVoQEENksTCapBmWZCMFGgKNUgrN9JEdEUnrbiBpllYIRVIk+cYllo8plWR52kR705aOCHPEXW1XUTUJaSF094hDVP2SqtvqOVIhZoS0oykdyetro8xlr3GhmISfUKbpdY0IewdjNcbkwwl1C+LA5EZlipT3gtzwhmKtTRZ45LSupYFE+mLrDe9hToBRFJCWrSlBmmrq3B4+BwV3XvmTHhgWr43C+eU1l5bKjI1eIVWwkM+mq1W4g5uGznLyqIaIBaXrzOUWkJz237DkRAst+/h7qnXlMO8+sZxdK1NZMyjk5Y8TKWZ4mD6RbWFgVRdTkwQbosGHNmVoEM8q7z2mPGU/GSnWaE7KDzxAUYy16ktnlVeOwjtCGlCiA0hRGGbfxtCCB/tEzu/Xwf+H+DjwO3I1h43l9r8NLBqWdZh4P8Cfs3vum+XdEM6aa26qpNWpd5WgzR0CViqcyzNUIl6W81Ja5IkYapBWqNukYoWaClCWqWVJhpSg7R6SeZ0WR7ndgKgGRRrCUzUnLR2RbpgTtjUi8yUdGO0hhqk6U0JWBEFSBMxOXWgVVTrE+A0oxXRYc/ntsJjxMwKZcWSv1RolqXSuFIFc7E9wUjqinIyeT4+w1rdY6jT1mJlP7mompNWqcD+oYuU8A5pxKdotnUSXFBau7C0xlBqiUbEO6TFRmSFp15Wc1eaK6fl+VnvTpo+cCchvUXD/h1eJdZl0UBk1COkAeXwPdw1dVw5N0wOiAct59FJExpztQe4Y/Ql5WbsI8bzNFpG71mlNyt1lGI9w/7EM2oLA7dln2apss9zKoM2ImebZhrfUl47CO0IaZZlJS3LSm3zL2lZKklCt+gh4JxlWRcsy6oDfwX80E3H/BDwp/bnfw18WAiFq+g7QHrYX06aoVVottWqOwnFAGhU1foyRI0iTdSctJZIEDfVYlDVUglNs2jrai+3aitN3FDbtJs2pAmPczsdFSoDmJpi0oxdFRqKe4e0SFpCmt5UC3caLdtJS3h38UJx6aS1K2rlUFHmWSnleje63EZWROZU1dbVcqSykVlWqh7z0WxVxCQT2avUqmqUNpqaYaOtBmlr9X2MJC4pnVtY3mAwuUzNUIA0zeD6xhRZQ81Jq6/YLljSe7gznJNgF2uqgZJekpWd0WHvTlpsVFZ46htvKq0drUpIS0x4DHcCrdQ9RMNVitfUnJ1h4xWWS3n3s2k3aU1/gLunXmdpQW3/Oph+nkvr93jv8yk0Lpfeyx3Dak5au2Vx/+RTXK095v3k5DQr5TxTkW8qrR2UXM+7EULkgc5f2LKckiRljQObEzmuAjd7oZ1jLMtqCiHWgRywxSYQQvws8LMAw8PDPPnkkz4fWm8Vi0VP66xcuMx74nDhzCmKce9FtXlKlGsppee2sbDK/UPw8gvPMbfi3RG7M1RivSSU1l4vNIkPlvn6176BHur+vG/+m5aX1/l+YH65orS2VTbZn1xTOnf51FmOpeHC1WXKCucPV9NozetKa69cPQWTcPz0RS6tegwdWhaPNg0qaxeoF496Xr+xcZGVeJbj337a27pA4doih4C5C6/x5JPebyhCzUssbuQ5rvA3W5orcW8Gzrz2LVZb3iHxYPQKZ1fv7fn32u59v7wa4b3pGl/40ueJZT2+v9p1Hs/M8exZtfd2qTDI+8ef4MknnvDsAhYuz/IJAy4thakqrB1dmyIXPqP2/nrzBR4chdPXqph5b9dSgCNrYxjV15TWri48R3NK57Xz19BnvLm+VqvBY02D5tLTPPmkd9iJVJ/j2toYZ57zDnlriyFuD8OV4/+ZstH9Nb7d63Qi/iKnF95D/ZveoWNhdZj7Rhs896W/InNwn7eTrRYPDL/EN6/8GLMK/19rq0f5xP4v840vfQEtEvN0bnVpgY9l53jq4m2sKawt5h/m9sFv8uSTT3re84NST0gTQnwCWTQwBiwA+4BTwB0+197uinLzraibY7As6/eB3wd44IEHrMcff9znQ+utJ598Ei/rnI6+DudhamKM9yo8votv1NCaad6vcO5r6/NQgmO3Hebe7/F+91i5VMSMD3t6vo6eOCUt9vc+cD/xTPfy55v/prOn3oJXIT9+m9La33zxr0hGn1Y69/XSOqzD9B33c9/jHsMDwCsv5sjGirxHYe1nz8ocivd96KMMDHp3leZ/b5ChVJ16IuH5ub/42u+xUhpS+pstzG7AN2FiKMSjCuefev1fs1YeV1r7RGQMLsDB0Rj3ez3fsqhenuNk8ZN8uMe5273vn5iRjul7Do0xeZe310rp+gWYh9jgXUrP+0uvvkIq+kd84L13dyZduNXpr38OrsPk0ffz2OMPeF77q08fZTr719yl8LhfviRDSA998Ic4f/l5z8/9hWenmUxf4ajKe/vN3+Hi4iE+/F9+r+dzAU7+xyPsy1xVet4XT/4iF5bV/q+vzzWofeWnOJBd4j6vr9NWleaVU3z+0g/xQwprvyT2w+y/4rZchTs8nl9feIPwXIlG6sNKz/uLFxto2m9y+4jByD3ezr/0xJ/BHAwe+1Eef9y7ezk/MYUeSfD4RN7znh+U3Fg6vwK8FzhjWdYB4MOA99vsW3UV2DxZdwJuGb7XOUYIEQLSgPr8lbdRhimdhXZTLS8srFdoopaTpoXl3UerptAbod0iGq7S1tTCnW1N9iurl7znpTUrdupjWC3cWSdN0lQLd7ZrMtwZiqmFO8vNLHFDLdypt1bYqCSIxtV6Rq+WB4kItXBnTFtkraJQNADEUgkq9Qihplq4M2POs173XjQAYNoVoaKq0NC2tkzEqFER3p0RAOLyMtZY817hWVmSAYlmRC3cWQvvB6C06D0vzdqQPdKMrEK4E1hvHyIbW4a69/dYpHmOmaVJMoNq17S50hFGE2o5aTnjLS6ueM9Hc3Rx5U6GIwrhznaD8eQprhS956MB5IYM3rx6J+mW9zYc1upxQnqLVeH9hhMgM7aPpY0c4Q3vxQPFy7JooJ7y1n7DkZ5/mHZb0LjmPS9NLD3FWilNYlzNUxo5fJChibzSuUHJDaQ1LMtaBjQhhGZZ1hPAPQGs/SJwmxDigBAiDPw48A83HfMPwD+zP/8k8A3LUk3PfXsVCsvCAaupFtM3QxValtoFTXcgre49J81qSrBraWqFAxjyvHrZe16aA2maIqQ1RRrTqEPLOxiLugQsQxnSBkiE1SAtbC2zUhogopiCWKjmiOlqhQMJY5H1miKkxQULhTzhtkLhgGUxEJtjo+m9/QZAPJ2kUEkSaniHtHZJNkKq6Wo5aaGkPK9d9A5p9TXFHmm22hEZeqotX/J8rla5QKGSJJ5VaJoMlDV7SkHRe/FAkrOcXzhMQvGyslyflrM3ax5vRtpNhmNnuVb0HlFwNFu6k+H4RWh4vKYVzhDW6yw21CAtFIJT8/eQN17Da5VKbf4V+THmsbLT1vCI4MULD5JueW/D0bz+AivFLLG8Wg/8/HiKE7N3EC54z0tL1Z7i6TOPMTau0rf/nSE3j3xNCJEAvg38pRDitwB/E2aROWbAzwNfRoZPP2NZ1gkhxL+zQ6wAfwjkhBDngH8JfMf2ZzOicse1FJ00M1SlJRQhzZSQ1laANAeuLF3NSROGdNIaZQUnrWpDmqkGaS1NhletuvdiZNGUTlo4obZ2zcqSjChCGiuslnIqhYYAFOqDxENqkJYML7JRV4M0TYOljTwRFCCtsY4ZqlFuqzlpySRcWx0j3PJeOFBdle0zWmE1J81M56k3DSh7h7T2hoS0UEoNEEViPwCNNe9Omtm4yMWFA6Qzai+0uinbcNRXvRcPZI1zzKzepv4at47Yn3h004oXMPQGCzV1J225absy6x6bu67JooENXQ3SAC6v30MyvNhp/OxW9bmXWdrIEcmp3QwkEvD6zAPkQieg6W0fMYvP88L5hxgZVfvPHh2FZ848Sqb5HFge2khVl8hqp3j6zPsYUbusvCPUrQXH/y2EeAxZYVkGfhH4EnAe+MEgFrcs6wuWZU1blnXIsqxftb/3v1qW9Q/251XLsn7MsqzDlmU9ZFmWWr33O0CGaTtpCq4OQMSoYAk1ayXkA9IaZemkWbraLa8Dac2Kd0izahKu9EhSaW0rJAGrXvIejtGaaxQqSaIx17U1W1SzskSNipKLFxHLrFfV3A2AYmOQRFgh3Gm1SZlLlJpqkAawXB4mpilAmr3pVFG7msZiEtKit2RM9FZ9TTppVkQN0lJpjasrE4TqCg1tyzNcX8+TSKvdgEXTAxSrcaziJc/nxqyLXFw8QNrlpJybZcUkpNWWPEJafY2kscRcUX26YMWYlp9seKzwLMjKznVL3Unb0GWFJ+veQp7tlePUmwat2BHltedrdhBr9VVP52nrL/PKpfvI59VASQg4v/YgumjBqodwa6NIsvUmz59/WBmUhobg+fOPyMbkhbfcn7gkw6MnF99HSO0y/o5QNyftLHLawAnkpIE7Lcv6U8uyftsOf+7JgwwndtVSCHe2mxh6k7amdiE37IoYy+MdEGwKU4bUnDTNtCGtqgBptgMWiqq5We2Q3H3qRe+QprfWWCtliCq2pmsIe5xU3bubFtVXKFQVhqvbqrRypMxlb3edAPU1QlqLSlsd0tYqeRI9Ks+2VVU2sq3rauFOTYPF4igJ3TukNTdmabcFmteZobaSSbiyPInZ9N7QNlSbYWZpipRiU6N0RnBpcT9a1aOTZlmk9YtcWjqgHHKMZ5IsrA/RWvcIaRuyhcRy3Xv7DUdW/ACNZojmqkcnzd7kK4Y6pFmxA5RrUaw1b5DWWDzOqdljDAyp5ZoCrGt2nzEvoNSqEau/ycsX72fYewvCjuYbdnHJioeQ58pLaKLNC+cfIq+Y2qVpcG5NNrVlyUPIc/FpGq0w15sPqi38DlG3Pmm/ZVnWI8D3IJP1/1gIcUoI8W+EENO79gjfJTKj9nw6FSetVQGgrRjuNKI2pDUUnLSqdNJESO1KrpvyvHbde06a1ZCQFo6pOWkYNqQpOGkha421sjqkNXXbCVOAtHhomWJD3UmrtOWQ9ZDl8W9ek+0+qqhDWqGeJxle8JwzY5UlpLUM9bjEcnmMVOia97VLs1xfHyaRNJTWTaUkpEXx7qRFWjPMLKtDWioFl5f2YTYueTuxtkhYKzO3cVA55JjJwPmFQ4iSxwDHhuyRtt5Wd9Iy2RDnFw51GtO6lbV2imuro8RU7UMgN6hzcvZ2WsveIE0rHOf4lbsY9Dj9a7MS2RQXFg95g7T1N9Fo8MrF+5RBCUBPjHF9YwyWPRQP2G7WmZVHCKuzKRVjmkJtABY9FA8sPMmbcw8yNKKY3PsOkZuxUJcty/o1y7LuBf4p8CPIHLI9eVDY1Kg3DUTbu5PWbkhIQ/cHabS8Q1qzKjd6EVaDtFBUAla77t1JE40C1bqJGfM2gLlzflheiJsV75BmsMZqKYuptjQtXTppVs0jpFlt4sYKJR+QVkXuAkbbYy6ePbezLtQhbaM5jKE1oOHtb+4M6m6bam4WwFptDEOveQZjrXaV2dVxkor3AvE4zK5OkNBnvbmXlkVM+IO0dBouLe0nanl00oqysnOpolbZCRLSLiwcxKipOWmdwgMFDQzA6bkjsOHNSWutvSXdLPW3F4OD8ObVO72FO2srGI2rHJ+5iyH1txf5PLxy8R4sL5C2IosGXr54vy9IGx6GVy894M1JW3yGK4VjRFI+/uDA6Kjgtavvde+k1ddh5SW+ceJDjI35WvptV09IE0IYQogfFEL8JfBF4Azwo31/ZO8yaRrUGia0vTtpnXFOipAWdiBNIdzptO3Qw2rhTgfSLBVIaxUoVFLKVY6aqQ5pJmsUqhlll8EKSUhrljx2jGlsoGttyi31cGdDyHONtsfnbTtpTV19Fym37F2g6i3k2diYp1o3MeLqDkehYV+NPSZVG41ZX5CmabBQnCQkGt6ed32VsChxZXnSF6RdXtpHRKxCwwOU25C2pjC301EmA+evHyLSnoFW3f2JG+e4ujqpnIcHkM3CmblpwtWz0HY5cdyy0DZO8dbcUXLqby9yOXjzyp2EGnPuq0vX3gDg+Iw/J21oCF67fA+ieA4aLq+pKy9TbmZYbRzw5WYND8Mzpx/AKpx291qzLFh6llevPOo7cX90FL596jGZU1h10eB78dtgtfnHlz747oU0IcRHhBB/hOxV9rPAF4BDlmX9E8uy/n63HuC7SdVmBM3y7qQ1qtJJsxQhLRIzabcFoq0AabaTpplqTlo4asOd2wvKJmmtDX+QFpEbfrumAGnaGsW6WvsNACssIa1e8uik1eVFv2ap33k2dcdJU4Q0Qx3SqjiQ5q14oF2aY25tlERCfepbqe1Amre8NLM1y+yKOqQBrNTslo9lD3lpJel+zRX2Kyc2x+Mws7R/y+9zt7aEtBL71RbmRrhTo+1pbWvjLGfnDpPNKi/dcdI0alB2OfymOo/WKgTnpAGsn3B3kl3ZefyKfyfttctO8cDr7k5aeYXzq/cxPOxvouLICLxw/kEEVsed66qNM1Bf4anTwUDa5563mw/Pf733CfPfwBImz559hHHF9ofvFHVz0n4ZeBY4ZlnWD1qW9ZeWZSl0Q92To3rTRFjenTQH0kRIjVbCpqBUi6MpQFrb7gUUiqg5aWZEY6OSQLS856SFLOmkqeaFGXbBgaUAaVF9jZIPSNNMuQs0yx4hzZ7bWbXUb/VbIbVwZ6ts36Ga6rf6NWFnJnuENKrzzK+PEFd7mQFQwQ6VeoG0ZhlTrHJ1ZcIXpBUaDqR5yEuzwWal5nHMziYJAUtV+3wvFZ7FCyyX8pg+/uCOkyZ/n4eQ58ZZzszdRkb97UU2Cydnb5dfuAWldZml89a1o8FBmtvigbXjlFqDzK+NBOKkAe7y0toNWDvOiWv+8tFAOmkvXbCLB5af732CnT/25Zf9Q9rYmAzXtkMZuP613idc/wYF81Fqjci710mzLOuDlmX9gWVZ35Ed/t+Jqrf8OWlaSI1WhIByPYZmKUBa3Q53KjppkQgUqwlE07uT5kCaqpNmRkMUq3HP+VFYbSKhApWm+i6iR6WL1/r/2XvzKMeu+77z87AUgFq7q6v3nU02xUUiKe6LuMh0ZEWyJcsZObGtSLFjxTmJfSJPZhLF/iMz48jJcRbHJ14mcSaWZR7HchxFlqzFiqKWaVIyRVKkuHez96X2Kuw7cOeP37soVBWWh8K9ALt1v+f0eQ28B1wABeB98P1thV4hTZy0SmjrZxE1IoAXrvaYF5ZbJFMYJz669UTbStg/E5R6g7RQaZa55J4tVxpCU2VoL5CWl/Yb/YQ7AbLK73OW6wXSzgGQqmwd0gCSlSP+/fXgpGXe5OzS9VtuvwGQSMCFFQ1pAYsHSit45WVOzd3Qt5PWM6T57Tdeu9K/k3Z5ZT+l+mRPTtrl7DuYnPT6Cjnu2iVrF5mBZABIS70K9RLfOd1fZScIpC1nZ8iGb4L5E91vsPQ09eg0L50/zt6tp5oC4qTVVZhk7N0w+7XOxUGlZUi+yMXKuwGuXUhzMq9KLUaI3p20asl30qJbz+EoVEYJbwHSqGSp1z1GtmhnxeOQKU4QqvcOaVEE0rb6pZZIQCo/1TukVVKEPEWhtnVIiyfCJHNTqGKPv3HKcnw1tHUnLTo6QbkaJdRLjhJQzy+ymNnJaG8zjNdJRWeo1z0o9JaTFqnO+eHOra89MjpGqjDVG6QVfEhb2d+Xi1ePzlCqxnt20orVUWrRPhKkgHJol6ztQ18gZd/k1Oz1fblZngdFbw/lWiK4k9YESv1A2tQUpPLbSFUO9OBmvUypPsWV1X195aRNTUEo5DFXDFg8UK9C8iXeXO4v1An4t/dYKN8ezEnzk/yffNmMkwZwufKY5HzVK51vsPiX5BP3oVSob0DUkHex8oMS3vYrhFvKD4e+tvwYwDUd7nQyrHItTpjenbSaD2mhPiCtWNmak0Y1R748Siy+tbeKhrTwFiBtxEuTK09uOXk/HodUYYpQj44SZZk2UKxv/QyWSMBqbjuq1xYcvpNWi2z9p/7oqMdSZoZQj+6lKiyymN7ZF6wkxiIsZ3f05qTVyoyoZeZS/Tlp4+Mwm9zXW+GA76StFg8Q6uPbcGLCYy59oOectNn0ESYn+8sVmprymM8eDu6kVQuQv8Rrl/pz0gC2bfOkKW06YCsMv0/Za5dv6gsQw2EJt17J3dKDm/Uic6XbAK8vQAyFpHjgfOpWAcRuLV9Sr0CtwIsX7+4r1AniIIZCcD5zp+S5dSsGW3gSNTLDd964wYiTBvD66mNQzcFyhyrP3AVIv86c+gGgfzdLQ9oryzov7WvtD774JxDfxfMX7iMapS8gfyvIQdoAVanHiHhbcNLKcpvwyNYhrVQdJeptIaWwliVbHN9yyDEeh0xhggi956TFQmnylS2WvbHmpIV7TaD3Ia2stn4WGR2Fldw0XqXXwgHfeYv2A2mwnN1BpNbb8/bK/TtpY2OwkN5FPd8DpPkVkf06aRMTcGl5H2oLTlq61t/P7clJuLR6sGcn7dLq4S1XdmpNTcHl5OHgTppfNPDm/DEDkAbnVm9qOGRdlXqNGjHOLx3uC5RA8tLOrtzqh/S6VHiqOiS/x/n0O5iYgOjWWuI1NDMDp+Zvlc+r34i5rfy+Yt86eU/fTlo4LNDx4uy7xMnqlhu28BcUJx8GvL6dq6vMnAAAIABJREFUtIkJ+U597tKjcsX8/2p/8OxXAHgt/V6gf0jbvVuc2zeuHIOxI3DlS60PrObh8hfhwIe4dDnMvn1s+Uf+W0UO0gaoyhadtHpZnLTwyNZzhUq1USJe705aqJYlVxrbcr+wkRHIlsaJ0LuTFgunKVS3fgaLx7cIaRUf0ujfSQtVe4M0VVomlZ8kvsVxVCCQtpSZ6bm6M1Tp30nTkFbL9xDu9E9y/eakiZO2F5XrJSftEvnKBKGRPhLSEEi7sNgjpOXPc36pf0ibnIRzi0eCO2l+qOjNuf7CnSCQdnL+JmnpUS10v0H6NVLqRuoqbATS3pi/Feql7uHW7Bmo5ji1eJsRZ6Wn4oHlZ2BkO8+fOta3kwaSl/ZXpx8CPJj/ZvsDcxchd5bl8CMAfTtpnif3cfbKDGx7B8x/o/3BV74Co4d4Y1YmO/SbkxaJyPO+csWDQx8WCCy0gOMrX5Z+oIf+BhcvwsGD/a37VpCDtAGqpmJEQr07abqZbV9OWm2U6FYgrZ7ry0mTooUJRrweIa1WIhoqU6z16aQVpoiqrTlpFa9/SIvUestJqxVWWM7u2HJFK6xB2ojqISdNKaI1M07abHIvXi8hR//YfsOdesi6V+xh6kDhMkv5/ooG9Npn5w+Iixekb1clC6VlzsybcdLOzB+WFirVAG65DzRvzpsId8Krl24CVLDGsqnXWPSHm/cLiNPT8PJFPey8S8jTb1fx8qXb+ioa0NqxA77zpj8ovVtz1+VnUNP3sLTk9e2kgeSlnbsyBdtvh8W/aH/gguy7UHwYoG8nDQTS5ueB3Y/B0lOtxxzWyjD3P2Hfe7lyxWNsjL4/XyCgNzsLXPd3QNXg3B9sPujCH0t1+q5HHKQ59a6KihPxtj5xIBLb+pm7XBtlJNQ7pIVVf04aQL6yBUjzk977gTTtpEW9rUFaLWQA0lRvTlq9sMJKdrovUNLhzriXDH6jaoYQZSNO2lxyD6HybHBQ8p202eTevp73+LgPaaoSvMlo/jLz6f7ab4DvpC0fxFO17uEvaLheb1w6YgTSXrngz8HslFCtlXmTqreN1dy0EUh78aw/BzPVJeRZLUDuHFeyZiBt+3Z4/rRf4dnNzUp+D7wQ3z1zqxFIm5mB0xd3wOTbYPGp9gdWc5B6mfLEPZRKGIG0XbtgcRHY9Yh04G/XSHjhmxCd4vTy24H+nTR9H3NzwJ6/JiMOZ7+6+aClb0E1A3t/iCtXBK5MhBwbkDb1NthxH5z5L+u/Y0rLcOWLcPBD1Ilw6ZKDNKceVVMxoltw0pQfRojGtw5plfooI+GtQFqObGnrThpAsTrBSLjHnDQf0sqq/5y0WK+Q5oc765E+c9Ky04yo1Z5mSarSMiu5/iFtKTND3EsFH1Pkd/FezPQPabPJvdKTL2jhgh+2yFV39Zm8L5AGQDGgk1e4zGyyfydNz+8EgoU8fUgz4aRNTsKrl/xxykES+DNvkg0J1JmAtO++eRy8UPe8tMxJQHE+eROTk5Jf1Y+mp+HKwhiMHe3upCVfhInjzC4mjIU7l5ZA7XxIIK3d52zlu6BqrIbvadyuX+3cCQsLwK6HBZRW2szSXPwL2Pku5hfkhTbhpO3Z4ztpe38Q4rsElDbq0ufBi8CeH2B21lwLjH37fEgDOPZ3JBexeUzUS/+XzLk+/vMsLkK5DAcOmFl7mHKQNkDVVJxouB9I66N/ldoapEWQwoF+nLRSbZx4ONfbXEMDkBYKQbY8JWDcy9gaXZEZ7Q8QV3PbCXtl+eIIKK+8wnLGTLgz5NUbrmBX+dMGFtNmwp1A65yRVirMkinPEEv00UCKtZw0APIB8tLqNSjMcqnPaQMggNgTpOUF0s4vHe577akpODXnDysPEnLMniZZFUgzkZOWzMRRo0e7Q5rvtJ2a76/9htb27bCyAmrbrY2O/m21+iJsewcrKxgLd1arUBx/SH7UpV5tfeDyMwBcKd4NmHPSVlehsv1dcsXC5ry0WG1RgH3Xw8zPS1TBRMhx926B05qKwpGPSJJ+85imShrO/Gc4+CGITnDlillIm5+X153DfxPiu+FbH5XvuNTrcOq34NjHYdutXPQ/gs5Jc+pJNeJEQ72HO6kVKZZjjMS2/ueqqFHiW4C0qJejUBnry+Eo1f1vh2oPbpoPaRX6sxnyFd8q6KVXWnmVZH6KeGLrP/U1pMn9Bc9LC1XNOGnLWd8uCBr2Ky0BGAl3rkFaQDerOEey1F8+Gmxw0oJUeBbnQdU4v2DGSbu00kND29x56t4Ic6k9fbtZU1OQL41RiR7o7qTVK5A7x1LpWOO2/UhDXjlxU/dwZ/p18EK8frm/aQNa09Nywi5P3COA2O4HSTkFuXPUp24zBmnaEVv0fFBa/MvWBy49BWOHmUvuXne7fqRBbykzA9vfCRc/t+mYXXm/K//BH2VhQcDORMhx926o1wXUuO5joKpw7om1A07/Z/nuvukfoxSNcKcJHTwoa1+5gvyAftefyI+drz0IX38EImPwjv8bwEGa09ZU92KMRHp30qgVKFbifblZNUaJRfM9hd4Aol6WQqW/s2cD0nqZ3+lDWs3r7+xZrPUOaaq0ymp2e19u1npIC5iXVq8Rrq2ylJnp281ayvhng1KAYcSwLtxpzkkLGnKcZTnXX/sN2OCkBYE0v/3G6dn+c9ImJuTvXfXGg7XCyJ6jHDmIUqG+QUmHSwvRG7s7abnzoGrMZc2FOwFy4Ztk7Xq1/cHp12DsKIsrcWNOGkAy8oD8pzn01Sw/sT8ffyf1ullIm8schcTe1pBWK8Hsn8PeH5IcMsw5aeCHPK/7qDy/1SYnUSn2FL4KMw/AxPXMz5vJR4O1+5mbA7bdCtN3wRu/Id8f9Qq8/usSht1xN5kM5PPmnLRDh2R7QY9q3fkg3P07Mkpv16PwyBcgLi+wgzSnLalGnJFw706aVytQKCf6gzRvlEio1r1L9AbFQllKtT6sFaCitu6k1cP9OWlbgbR6aZXVXH+QJqFW/2wQFNLKq3goljIzfYc7F1I9Djr3e5UtZnb1lX84Pg6zqz4oBc4Lm2Uxa8ZJK1YSlNT2YJDmN7I9O2/GSQOPrHd9sO77ufPkkXFQJpw0gDQ3ipPW6YdYWiDuYvJ6olH6+lvDGqQl1U1QL0srjnZaeR6238bqKkYgTeeWzVfvAS/cmBW5SfMnwAuzqB5Yd7t+pCFtecWDnQ+1hrSFb8p33v73NyDNpJO2uAgc+UkIjazPDVv9LmPV83D0I/IwFszko8EapM3rDjvv/HfyOf/Ge+BrD8k0gJv+D8B3vLAIaQDHfho+NAsP/ZHAoa+LFyEWMwPFw5aDtAFKhWLEo8We3SxPFShUEn3NfKvh2yO1HkKe9Roj4QKlWn9nz6rn374XJ61qBtJKyj+DlXtw0or9QxpAvuafiUoBw52+69Wvk5ZIwHxaDzoP2K+sOEexNo4XGesrLDI2Bsn8NqoqFsxJU3UoXOHy6gEjThpAphZw6oDveJnIC9NuVqp2fcAKy5Mk6zesu+1WpSFtpXJcfox0ck9TLwFwcv5Wtm3rPwSmIW2xpOdotqmyLK1A9k3YcQ+rq/3nwsEa8CysjMO222CpDaQtnIDpO1lOywttKicN/LDfzofFodwY7r38BQgnYPcPsLQkDXT7/VvDBicttgMOfADOfWYt7/bMp6kTlX5iYNRJ04PSG5C26yF46E8g+ZJ8nu7/A9j/fmAN0kyFO1tCWhtdvChFA1d7I1twkDZQKc//2dqjmxWqm3DSfDes2xiRdTeSY8v1/py0KtpJ6z3c2S+kldXWctJW8/1DWrHeY7jTzwvrF9KiUVjNayctKKTNky7v6WtdwM9n88jV9gYDpeICqCoXl/uHNA1a6creYE5a9iz18DjL2R1Gwp0Ay6XrpXFqp7BfaRnKKyyWbgT6d9L0iX8+L/fXMS8t+RKMHuTK0jYjbpaGrUvZd0hFX7sO+H7XfabvJpk066QJKD0ga2983at5Sd7f9SjLfnqmyXDn0hJw+MPy3E//7toBSgmk7XkcIgkWF8XVMQEN65w0gOt+Wt5Tz/4DOPeHcOo3WUw8ArFplDLrpGlIm2uuCdr/1+F9r8D7T8LRn2xcrSsxTTlpY2PyNw8KaddCqBMcpA1UyvMpq95bXpqnin1DmgptwUnzG2NWVH9nz1poazlptXqI0Eh/1FD1NKT10Ni1Ik5av6GgMluHtH4BMRobIVOeCh7uLMyxWtjTV9EA0IA8AaUAkObPurywuL9vSBsZEUBNFvcFg7TcOcrRI4BnzEmby90gydT5DmcSP+Q4m5W2GabCnZczfhuOTnlpyZdg29uNgZKGtOVUArbf0SEv7DuAR3niTnI5M2uvA6WZB+T7amOV59K3JQy7+1FWfEPbRLhzakpaiCwtIa0oDnwAzv7+WnPX5Eviru3/4cZjNBHqBHntwmHfSQPY+x64+ZMCiU//BMzcx8mpXwSkCrRaNeekTUz449c2jqidPA4j69/Ipp00EDftfIDBGtdKjzRwkDZQqbB/1m/VpbmDwkqctH7mzamIf/bsxUnzc8jK9f7OnvXQVnLSMqQLkyQS/f30XIO0gE6aUoSqZsKdNW+SmgoN3EkDgaVkYWdP4c7lfP9OWjgseU7J0p5gOWl+8v6Zuf6dNJCQ51LOD3d26/yfO0s+dBTovz1BIiHP/XI6QFPZjDhdF1PifJnokwZwafWw5Ce1c9LqFUne3/Z2YyHHRk5aEpi5XxyzVi7i8jMw+TZWMvJ5NOFm6ftYXkaSyGFzY9mFE5KvtvPBBqSZWDsUkvvR7hzHflY+v5c+Ly7ad/+xVBvu/xF5WIvm8qNCIQG+hpPmeXD7p+CBJ+Do34ZHv0QtJF9eGuRMOWkg8HMxQAHzlSsYmzagdehQdyetVoPLlx2kOW1FIbHCVLU3Jy1MgXIt3p9VHt6KkyZQ1QiVblEq0ntOmqqkSRcm+3azGuHSoDlptQIhVTYCafFEiFx5W/AWHIYhbbUwExzSCnMsZXf37aSBfDGvFPYG65PmO2mnLpuBtIkJuJw6Km6WD4AtpRRkz5JVRxq360eeJ/dxbln3KzvV/uD0SfAiXFg6wthY/01do1GBxGQqDBPXt4e09BsCatveYcxJSyR891JDWq2w2c1SSiBtx91G3axIRJ7D0hIwehAmboALf7T+oPlvwPSdEJ1sAJWJ5w1rDW0Bae46dhhe+Kfw7M/D3Nfgjl+DhFhYi4vmnDQQ6FrYaJIf+Qm4/9Pr+jvq3DFTThoEhzTdyNZkXlgQSJubE1BzkObUszzfSatWenTSKFCq9kkMPqTVSgFm+2n54c5G4v9WFek9J02VzEBaNBYlXx4N7qT5rpcJSEskIFPc3pOTVq6PUawk+l57dBSWcruCQVqtBJUkC+n+nTTwW4Bk9wqcdnON85dQoSiXlnYac9IurFwnFzpVWZZXoJolWTHjpIE4WpdX9shnrZuTNnGM1VSk71Cn1tQUpNPA1K2w+kLrg5JSNGDSSfM8uZ/VVWDn/XLlxpBn/pK8D3fcYzQvDAT2lpb8B3L93xMnTbejWH1Rqi6b3Kxt2+grItGsdZDmheD+34dQFE79Jux+tzweXyadNJD7WuxQH6I1bCfNZKgTBNLSaUh1+Dq/ltpvgIO0wSosTlql2JuTFvEKlGv9nbU9P9xZKfbgpFXESav36aSxBSetXjYDaQJKU0OBNHGzdvTUUDZXnSEaFZeg37WXMruC5aT5IDeb7D8nDQTS5tO6DUcXNy1/CRXbj1IhY07a6QVp1Er2TPsD/VYRSwVzkDYxAem0J25WNydt4kZSqf7z0bSmpvwT18x9kg/XauJC8iXwIqjxG405abDW+Z/RQ9IzbCOk6WKC6bsbkGbCSYMNoHTdxyAch1O/LZdf/hVxlY7/A0CAxSQorVsbpAXE+16WJqsP/pGAG1Asyt/GpJvV0klrIZ3gb3LtAwfEoSt3GeJiA9IOS9eajm6a3ucgzalneREhjkqxNyctGipQrvdHDDoBv9oLpNXESauH+jt7xuIhssWx3sKdPqT1HXKMQ7owHEhLJGA5uzN4Q9nSEplK/6FOEFBaSO+WkTXd3Cw/LHllxVy4cy5oQ9v8JemUD0bWHh+Hs3MHJQ+pE6TlBNLmc0cAc05aOo2E3bJtnDRVF4CbPE46baYlg147lUIGT0PrKsvk92DybeSKI1SrZpw0EOBaWUHcrJn7N0Paxf8OI9th++1Gw50goNTIC4vtkHFB5z4jTVUv/gkc/3kYkSe6uGjWUdqxo2ltrVBURiLF12KbOuRoElgag8676PJlKagxGWrV8HO5QzZBvS6wdOSIuXUhWBuOU/7vo2PHzK49LDlIG6BCEXHSqqVenbQilT6dtFDUh7Rewp2+k1brE9LiccgWx1E9NrM15aSl8lPBc9IMQ9pSZqaRa9ZVxUXSpf4rO0GctPmgDW19J+3ikplw5/g4XF4JCGmFy5TCBxq361cTE5DKRCQ/KNMh3Jk9B8CVlNlwZyaDOGnZM60LF3IXoF6y4qSl08D0HQIKS9/efFDypUY+Gphz0tYl0O9+tzz3ZenyTzkFlz4Hh/8WhEeMhzs3uVlv+98l9/f5T0ji/o3/qLHLdMixMWS9S9tLDVO6fYUJ7d8P2az/N++gS5fk2H7G+m2UhrROIc/ZWahUhgdp+/eb+dH3VpCDtAFKO2m9Qlo0VKCi+gx3jsg7tlbq3Ukj0t+7PR6HTHGCeim4k+ZVzUBaPA6rueE5aQsp30kL0sC4tESqYMZJGx2F2dWADW39kOSFBTPhzvFxuLAYANKUgvwl8uxv3M7E2pkMMH6su5M2sp2l9FSjIrVfSbgTcdLqldZtOHR7jMnjdsKd4bi0wljeAGmZ0/J4/GayYNZJa0Da0Y9IDurr/1YuX/hjqBXh6EcBcdyiUTN/a732Okjbdit8aAHe9xq894V1jpYNSKtWu4OSDUg74I+J7eRmwRqkmVQQSDt3TramIW33bnn/dGrDcfIk3HCD2XWHKQdpA1R4xHfSyr2FO0fCBaqqv7NIOCZn33q5FzfLPzbcv5OWKUxQL/cAaTVzTtpqdgoVGNLEZjCVkzaX3CknqWoAB7O0xGreHKRdWfXPCt2cND/ceX5+lzEn7cLiLnF0OvULK69CrUC2btZJy2aB8es6Fw5kz8HYETIZccBMVKA1nLTJt8kVyRbd93Xl5YT5cGcDFnbct7kVxpUvy3b/+4w7aY1wJ0gO2PU/Cxc+K33Czv6evB477gYE5qanzVX8zcxAoSAzIhsKhWHqbTCxFu/SQ8FNQpoO2W4KeW6QbupqA9I29SvboEuX1o41pSCQdtafDmYa0kIhWb8TpJ06BcePm113mHKQNkCFokIctXIPTlq9SiRUpdqnkxaNJajXPeo9VXcKpPXbUFY7aSoopNVrhOs5YzlpqULv4c5kbpsRQJxd8c8K3fLSaiWoZljOmQt3Xl7SkNbdSVMj20lnY8actEwmBKOHG2HFlvLbb6Qq5iBtnZNWXmlA9yblzsL4UTIZc32cGqC0/Q7JiWuVF7byLMR2Qny3HScNmlphvLR2wJUvicM3cb0VJy2bbUokv/EXZPuF41Jted3faVDZ8rK5fDRomqHZBZSSSWnLYNpJgw1OXgvNzcnTN5kPFwTSlLIDaWNjAvhBnDSd6G9S118vblkrra7K38M5aU5bUjgqTlqtlxYctYJs6O/MHYt75MujqEpvLThypVFGYv29TRo5aZWALp7fqiOdN5iT1kO4s1ifpK7CRsKdsyv+N3m3vDS/AnQpbc5Ju7SkKyy7Qdo8amRP43b9amJCg9LRRoJ+S/mQtlo066SVSlBN6DYcLUKeSsmcwTGzkKafdz006s+SbJEXtvgU7HyQas0jlzMLaZmMgAgzfvHAwjdlW83Dwjdg3/sArOSkQRMojR2G2/4FHPpxuO/3JE/M18qKWUhbNxqqg3Ql5LAgbWbGXOsPWBu11AnSVlbks2Aa0kDus9Pa586Jc2jiB+dG3XILvPaauKMbpYsGnJPmtCVFRoQ46pUenLSaHFvz+oS0GORKY6ggYTdfqpolVxwzkheWKU7gBe2T5o9wMpWTlspP4dXywWamllcpVLcTCtHXQHsQ4FnM+GeFYhcnzYe4hfROY5C2kp5ERcYCOWnVqECaKSctlwM1eqTR6qKl/GazizmzThpAPtShDUfunHyuJm4w7qSBPHdm7pMGrs3FA4V5CcHufFAgFrPhTvDheOww7LgH3vh1Gbo9f0Ke776/DmDFSYMNbtbN/wQe+H247qMSfmTtGFNFAxAclHRPMZNull67W7+yuTmzoU6Q7/OdOzuDkt5nA9K69Uo7d858qFPrllskxK3dumZph805aU5bUtiHtKE4aTFxswLlRvmql3NkS+PmIK02eEhLJOR+mu+3o8qr5KuSj9Zv3kwiAYvpgOFOH9Lmk+bCnQAqtrs7pBXmKIfMQppSUIkdlefdzkHNXwIvxGJ2T+N2/aoxZL3eoaGtbva6/XbjThr4Ic8d94ojnH597YAlf2TRzION0KQpJ02Dz+oq8sZ9+z+XnLBTvwUnf0OKf3Y9DKw5aabW1pDWyEvrIFvhzqCQZtJJ0+A126WA2QakgcBXp8IBDWmmCwdguJB2882yfeWVzftOnZK8teuus7P2MOQgbYCK+BPSVU9OmkBavU8nLR4XJ82r9QBppSzZ4nhfg91BADFTmCDUI6RlihNGctKSed8yCBLyrKySLW834mYlEk1OWldIk/2zK+bCnQC16O5ALTiK3u51t+tHGlb0XExybbJ8s2cgsZ9MVjr3mgJE8ME8NtPaSVt9URqNbnu7FSctnWYt5NhcZbn4lLSHmH6nNUhrgNLeHxJQfP4TMPvncNuvNpppr67Kc+63YbJW0AR6/fhsOGnd1rYBaePj/pSJLhWWs7P2IG2YTtrSkjhaG1Wr2emRptUJ0k6elDy4fs9ZbyU5SBugIjE/3Fnt3Ukj1J+lpMOdvUCaquTIlcyEO7PFccIqJ808u8mwk7aa85NvSgF+6pdXyZT6r+zUa2cKEygvGiAnTfZfWTbXzBagEu7ipFWyUM1SUGadNICMPxezbV5a+g2YvJFsVkLL/YaXYQ24sllg8sbWFZbJF2DiOERGrUCa9Eq7QRq4Lm2AtB13QzjWqMQ0Fe5c56SBuGl3/GuYugUe/TO48ecbx5qcNtC8djdQyuel+75JJ00/j6BOmsmmriAuVSdIU8qek7Z/f3dIC4XsrN2pX5mtHmlaU1Py3F99dfO+a62yExykDVRR7aTVenDSqr6TFjKTkxZSvUCaGSdNhzuBYOFWw5C2nPXPCkHGM5VXSRfNQJrAlkc1vDNwTtqVpWmj4c6yt7vzaKaCjA/KVPeuu10/0pCWqvpOWqu8NKWkZ9iEQJqpvlkNQMwgTtLq85KX1azVFyWx3z/OSrjT86QVxuJT8lyrBXksOx8EsO+kAex6SMYU7XvvumNNze3UCuqkmZ42ABuGrHfQ4qIAsWmHZf9+GX/UTsmkVL2aHo8E4pAtL7d2s0Dgce9ec45ps268Ubavv755n84VO3rU/Lpat9yy2UlTSiDtWspHAwdpA1UsHqJcjcJWnLSwIUir99aCw5ST1oC0IKOhDBcOLGf8s0I5GKQl8+bCnQDlUIDRUKUlVHQbqUzUiJulH3+egwKA1TZNjHPnAEhVjwBmnDQNK6v5XfK+9ddYp+KChJ8njxuFtHVO2sx9kjCf/N7aAeWkPJ7ttwsn2nLSAA5+ENKvwcX/JkO36xXY/QOAeUjTjlKQvDDTTtroqHy/dFvb9LQBrU1TB1poYcFs0YBWNyfNRiNbrW4NbW00stW66SbZtgo52uqR1qxWFZ5vvik/kN7+dnvrDkMO0gaokREoVWK9OWn6WEOQFu7BSaOWM+ekFbST1hukmZmfqZ20LmeRWhFqRSONbPXaACUCOGnFBYjNUKuZcbP0faTrfqOiXJumsn6+2HLxCGA23JnNeTB2pLWTltFNXe04adksa3Msm0OOGti2306xKPkzVpw0gOt+RnqmPfsP4cVfggMfhD2PrzvGVLizF0gz7aR5Xps5lhtkeri61rr5nW1ketqA1v79Et6rtZgABsOHNBv5aCDv9UOHWkOadtJ0SNSGbr55c4XniROyffRRe+sOQw7SBqhYDIqVuMzuCypDTpouHIgSfOJAqJY1Wt0JNBrkdpQPcpnCRN95SjIWyj+DdXPS/Ea2K1mzTlpBBZjfWZilGpXmRyZBKVXRkNYmeT93DrwwywVZ22S4Uzr/t+mVltbjkSyGO0cPQGLf+uT9RmXnbQ3Hy0rhAEjribt/WwA9OgX3/L+NkmHTTlo87rddGYKTBhvmd7aRjXCnvr9ubTBsQlqtttaHbaNsQpp2ydrlpdmENBA3q1Ve2GuvSWGBiVFrndaG9ZD4jW9IeNeFO522rJERKFVjePXeqzu9iAEnrThGxAvupIXqUjhgwknLFv2zZ8BwZ6k2xkgsbKQNRq0eoaymuuek+ZC2nDGZkwb5WoBwZ+EKlYh5UFoq+pCWbwdp52H0INmcuQrLdSHHsaPtnbRQTNa2Fe70PAl5Ln1r7YDVFyG+C+J7rEFapvktPnMvPPhf4bEvy7q+UilpbmryRDY9PRwnDXpz0kyHO3fvhvkuXWZsQZpuKtvOzbIxEkqrE6TlcmEyGfuQ9vrrm13EZ5+Fu+6yty7AO94hn52vflUuKyVO2mOPmRs59laRg7QBamQEiuV4T5BW9wsH9EiprUqHO6NeLtiwb1UnrCTcOYyctGKt/3w0vTZAUe3oDmmGe5Xp+8hVd0r+1cYEdi2loHCFYsick6bvYzm/D7xIZydt7IhADWYbysrUgSPy3DeOZ0q/IRWQobBRSNPPuwFKO+6TNhzFBUnev/ynsPMh8DzjkBaLyWc8tbHTy+EPw/Sd667ScztNnlCCQFqnzrP7AAAgAElEQVS1KgBr2klbN7+zjWxB2v79AmnVauv9Spmf29m8NrSHtLk5eV+YhmKQ9+3UVOt+ZZcvy5ePzeT9m2+Wat0zTV1uUilJ3r/zzva3M6GxMfjhH4bPflb+7idPChBfa6FOcJA2UMVivpOmgoc7ayUNaf1RQzgM+fI4Ia8eLNzqJ5obKxzoMSetUO0/Hw3WQClf2yGzHDvJzxu7smKm679eO13WvdLahDwraagVKCjz4c5MNiJhv7aQdh7GDpPNSrm+CTBeF+6c8OvhN7bCSL8Bk8cbx5l4ziDPYWyMBnQyc79s574O556Qv8FxaUdhGtJATsbJNuNCm2VybqfW9HRTC44O68JwnLSVFflMmB4VtG/fWquLVkqlpCXEMCBN90iz5e4cO7Y2CqlZ58/LB0r3FLOhViHH55+XrW0nDeAnfkIc0q9//drNRwMHaQPVyIjkpIVUcCetVjYT7gQo1/0zYZA2GP4xxprZ9pKTVkmRL08YddLytSBOmkDa5aWdRgExXeoCaX4bjGzdXLhTQ4+EHA+3rrCslSF/ueGkjY+bOZnEYhLKa1RYwvqQY70i7taE1PFnMuYS6KFpyDrIeKTJmyR5/9Vfhe23w65HGuuCWUjbvj1YyNEWpHVbW0OcrZy0Tia96WkDWjrk2K4Vho25nVq7d8sP4HaQduaM/SrHl1u0Ajx3bpRIRIaR25Ku8GzOS3vuOdnadtIA3vte+Qz9xm/Af/pP8j6w+XyHJQdpA1QoBOVqjFAvTlpZgC4c659YSrVeIE1gyoSTFg5DsdpDTprfUNYkpGXLO7oXDvhO2qVFs13/kwU9ZL1NXpoPaemyNFMy4SrJWCslcyTHDrd20gqXAAXjR4yGHKEJlOK7YPzYekjLngVVlWazSOjPJChNTDQ5aeEReOQLQp/ZM3DjJxokagvSurlZsBbuNKkgkKZdPhtOWqXizy1tI9NzO7W0m9UO0vT1GuZMKhwWp6wTpB07Zn5drVtvlee38T134cIoN9xgpkF0O7Wq8Hz2Wen4b7ppcCvFYvA3/gZ86UuSG/ev/tW1l48GDtIGrnItTogenLRKgWI5RizW/5+qoobjpAFU6Q3S0kUzkBYO+65OeTqQk6aiU6SzI0actJER+dJYzXcZsu5DWrJkLtzpeZBI1NactMKVzQPms+dk64c7TUPaWsjxAVh6es1mWf6ObLfdSrUqpfTWnDSAiWPwyJ/B8V+Awz/euNoGsASFtGTSPCgFcfH0fhs5adA55LmwIM6TaXVz0nTO1sGD5teG9g1tczkJwdqcI9kq5AgS7rQZ6mxe/7vfXbv83HODcdG0PvlJ+MVfFDfvp35qcOsOUg7SBqxKLUaY4E5avVygUEkYAaXeIE3OsCYKBwBGYmFKtdFgOWnlVVIFMxWWIK5SqrhDEtjrbbKLAYoLqJGdKGUmb0ZACRYyfrvxQpuziH/9StFc13+AeLwJ0lRdBpo3S7trY+adtHVu1s77ZTSVDrle/jwk9sL2OxowZRLS1q2tNXMv3PXvG/MrwU5+VpC8MDA/w1KvXSy270APdmZYQjBIszXDcufOziFHDWm2Kh3bNbTVCfU2nbRWkFYqSeHAICDtfe+Tlhvf+Y788HjzzcHko2kdOwb/5t/Y7ck2bDlIG7DK9TjhHpw0VS1QLMeN2NZVthbuNAGI8TgUqxPdnTSloJxkNW/GSdNrp4p66kCHM2hpkXpUzl6mQGl0FFay2yAyDvk2DWULsxCZIJWTuJupJPpEorYW7oTNIc/cORk0PnrAXrgTxEkDCXnWSnDly7D/h8ELNXqKmQw5bnLS2iiZlJE5pv7WENxJswVp+r7baViQphP7bYxHCoflfjs5aTt2mP07N2uYkHbokLzfmyHt5Emo172BQNpHPiLfV7/92/DHfyzX3X23/XW/n+QgbcCq1OJEvN4gzZST1hOk+TBlYjQT+M10K9ug0qX0rZoDVWU1aw7SZMh6gPmdpUUq4Z2N25hau1DwYOwQ5FvUyoM4aaP7yPuTm0ydTBrhztF2kHYeEvshFLUb7py6VSB18WmY/1/yA2D/BwDznfehjZPWQsmkJB6bzGPZvl0cuuZxNRtVLMqw8WFBWjhsPtSqRy61a+q6uiozLG04aSAhz06QZivUCQJpqdTm99zp07K1Ge4MhaSCs7l4QCfy68R+m5qchJ/8SfjDP4RPfEKqKx97zP66309ykDZgVeoJoqEO8YgNUtUihbIZSKt5GtKCVFjK2TNT7L/rP/gNbUvbOjtZsNZQ1iCkxeOwoiGtU/FAcVHmbGISlPzw0+jB9qOZClcgsa+RdG3KSYvH676T5p+hNkHaWRnbBHbDnaGwDDu/+Cfw2r+GyBjseTeAlXBnL06ajbwwpVr0SmuSdtpMVzpqSOvk5C0uSlJ3yPA3v3bI2oGSbupqw0kDgbRO4U6bkKYrCt94Y/31p0/LjwAbxRLNuvXW9U7aq69CKKQ4ftzuulp//+/LD494HP7gD+RHgJM5OUgbsKoqTiTU28SBQjlhBJRqnn8WDhTulLNcsTpp5As9Hod0afvmpqYbpSEtbTYnbTnjf1O2c9KUgtKSzNnEnJM2OiquCaOH2oc781cgvpdcTsJvpiqyGk5aOC6OWaapoZKqS/f9KYmJWA13Atz+qwJn8/8L9v6QPCawEu4M6qSlUnYgDTqDkq2mrkGdNButKCYm5G/eDtJ0DzObkDYsJ00P9H7ppfXX68pO2xWHt9wiDqYOZb/6KuzdWzDej66dbr8d/u2/hS98wd5A9+9nOUgbsCr1BCM9OGmeD2kmnDQV6iXcKWfPCmbOnvE4pArbAztpiymzTtpSpku4s5IEVaVQl7iNqS+4sTG/LcHYIel6X9sA6P60AR3uNJk304A0kH5hS0+v7Uy9JoUUfr6Y1XAnwI674X0vyyzL2z7VuNpGuFMDYqeQI6yFO00qyKBzve9agjToDEo2xyOBwMHq6uaiiVxOrrftpMXjmyHt9Gm7oU4tXTzwwgtSNPDkk3D99cFnNJvQJz4B998/0CW/b+QgbcCqqgQj4UKw0UyAVzeXk6bCPqTVguWkVeojhCJmbJ1YDJL54JC2kDSbkzaf1OHONmcwvz1GvmY23NmAtFH/LLGxwrKSlAkQfrjTVKgTpLqz0bdq50PSJyzvn0U1sO18AKUshzu1wnG44ecakwbATrhz2zYaz6mTbIU7obOT9v0IaYNw0mANBrVst98ACe/dfPN6SKvV4Nw5u0UDWg88IO+7X/91yQ2bn4f3v3+2+w2drgo5SBuwasQJh+rSzDOAvLpUd5qANCIJ6soLHO4sVs0UDYD80kzm/MIB1cHi8CFt3iCkxeOwkpmQGZbtnDS/0Wy2ajbc2RhRNObXiG/MS9PQlBAnzSSkrXPSdr1LtktP+dunIbYTxo9RLsv8O9NOWj6/efjyRtkIdwYBJbAT7gySF2YL0sbGJFz+VoS02Vn5TJn8O29cGzbnpQ0C0kBCns2QdumSNPcdBKRNTMA/+SfS1PWTn5QctTvvDFBi7HRVyEHagFXDP/vXgoU8QypPrjRmJE8pFvMolEcDhzsLlQkzcIgPStntAmidChd8SJtbMZuTVih4EJtuXzjgO2l6hJN5J82HtI15aYU1SMvlzIY7G33SQMYhhUdh4Um5vPi0zLX0PKPD1bX0fXXqQA92IE2DV7cZmteak+Z5nacOVCryuGxDWqsggW6/YSs/q93UgUFC2tycDHKHwVR2Nusf/kMJJc/NSejxWuy8//0qB2kDVgPSqsEgLazy5MujxnqV5ctjgVtw5Ctm5mfqtZcz/hmsU8izvIrCI5kz5+IlElJ9xEiH+Z2+k5YqmXfSBNL8Tpq5DW04cmdlO3rQeLgzkahRLPpuVigqczQX/xKKS5A5CTvX8tHAfLiz+b7bKZ2W52yyIiwIKOkRRrZy0rpBWiRi9vXW6gRpumDBJqQVi60rW201sm1eG1pDmufZT2jfWDzwLX8K2q232l1Xa2wMfu3X4L77ZPC407UjB2kDVs3zz/71YBWeYfLkS2YgLRaT5rRBw53Z8qRRJ20pHQzSiG5DqZBRQCwUgNiO9jlpPqTpEU7GIS0cg/juzU5a8hWpehw7ZKVwAJrcrJ3vguSLcO4JuTxjD9L0fXWDtEzGfAgsiJOmHTzTTloiIdW53SBtetqO29EJ0mw1stXqNJ5pdtZePhrI33FsDM5v6DJz4YKMorI5wxLWYEz3K/vTP4V777UzBqudfuqnBA5NfW86vTXkIG3AUiH/ExTQSYsgTpqZcGcPkFZJkyuZddKCQlo9sr1xGxNq9CqL7YDSUuuDiosQGSdbkEVNhjvzeT8ENHpoc05a6mWYvBm8kJXCAWB9Xpqqw/P/SEKf03et228D0rr1K7MxaDyIm2Vr0LjndZ86YGPagNauXe0byurrhwFptqYNaHmeVDl+73vrr7fdfkNr7175m770kgDpM8/Aj/yI/XWdrn05SBuwVKiHnDRVJ+IVjYU7YzHIFMYDhzuzJbM5aQtJ/4zYBdKqYTnLmnKz4nE/3BnfKyOYWqm0CLGdjRJ+k06aUj4kjrXolZZ6BbbJz3AbhQPQ5KTtfgzu/V146L/B+1+FiDzJYYc7bUFaJydN7zMd7tTrd2vBYQvSOo1Hsu2ktWtoWyjI620z3Alw223w4ovrc+IGBWmeB3fcIcn7n/60XOcgzcmEHKQNWmENaQHCnT7ImQx3ZotjqCATB6oZYyOhQEBpflU7aR3OnuVVqp4dJ02NHhAnrdVrX1yE+M7GaCZTa2voarThyF9cO4uUlmXw+NQtjWNshDsboOSF4NjPwKEfW5vnybUX7pyclJNmJzfLxnB1rW5D1m1C2r59kntWKm3eNyxIm59fv9+Wbr9dXttLfpebTEbmWOo+Yrb1qU/Ja/zJT8LRo4Nb1+naloO0AcvzO60HctKqQgymwp3xuIQ7VSVYuDNTGEK4s7JKxTCk6fupjrTpVQbrnLREwly+0DpIGzsiLmbRP2ul/FkuTZBm1kmrr63dQddauDMUEodsGOFOGG64s12/MBCA8Dzz46i0xsbkdd8IabYb2WrddptsX3xRtt/5jjQ0fuABu+tq3XMP/If/IP//kR9xFZZOZuQgbdCK9BDurAmklaqjRj7wOietK6SpOlRzpPLmwp2xmMwBVYS6hjtLmHfSAEohv8KyFaQV5yC+i3zeXKgTNkDajN+Se+EvZKshzXK4s5ubda2FO0Hga5jhzm5joYYFadPTdmcrtuqVZruRrdY73iFbDWm6wvLee+2u26yf/Vn43Ofgl35pcGs6XdsaCqR5njfted7XPM875W+3tznuK57nJT3P++KgH6MthaJCACpIuNN30irKTAwscOGAHw412QYjHgelQqhohyHrSgmk1c3npAEUQtpJ29AGo1aUXLWxIxQKZkOO6yBt+p0QnZT5lQDJl+VyYj+VirSFsBrubCO932TYcZhOGnQHJZvhzk5rl8vyetuGtFZ5aTYb2Tavv3FtHX60DWkTE9I89oUX5PLTT8skgO0tzy729MEP2n+dnb5/NCwn7Z8CX1dK3QB83b/cSr8GfGRgj2oA8iJCDLVycCetahLSimN43cZC+XM7k1mzhQMA9fC2tjlpIVWEeoVCzY6Tlqv7zZI2Omk5v25//Ggj3GlK6yAtFIGdD69BWuoVCXV6XiMXzkZ1Z9Bwp0lA1MCnW120klJ2ctIgmJPmefYAMZVqPW1Bw5vNwgF4a0Haq6/KazKIdhS6eKBeh29/282TdLr6NSxI+wDg18DwaeCDrQ5SSn0d6PJb/OqSdtKqpeA5aZW6mbOnzknzarnOs0Mr8pKvZszmpAFUQ+3nd0aV0ELeEqTly6MwMr3ZScuek+3YEeO9yjYl0O95N2ROCSimXoEpCXVqkBqWkzY2JrlcphQOCwB1AqVSSdzDYThpyaSsa/I5N68NrZu62po2oLVjB0Sjw4e0ZkB96SXpIzaIHK3bboM334Tnn5fX2kGa09WuYUHabqXULIC/3TWkxzFwhUeEGGo9QFoVs+FOjxrUy+0P9CFtJWO2mS10hrRIXdbNV8xC2uYKy41Omt/137aTBrD73bJ98sek0nTXw+v2W+2T1kamh6trdXOztMs2jJy0VMpOPhp07tNmG9JCofZtOAYBaTffLOB98qRcVkoavA6q8/5dd8maH/6wXB5U0YCTky1FbN2x53n/E2hVz2M8pdLzvI8DHwfYvXs3J06cML3EJmWz2S2tc/bCFOyA06feYCXd+fYzhWe4FciVPCPP6eTJHWRLcjb+y29+hWqo9Vlqe+k5bgNWshPMzZ3jxIlzfa996tQO4O3Mr0IocZlnWjyfkZx023zttMDaiy9+m/n5YJMZOunkyW3A7Tz11AtcdzDBSO51nmta/7r0NzlAhL/4q5PMzk4QjdY5ceLFvtcFmJ+PAffz3HOvs2fPHKg6D4YmiS4/w+zoe3nj3H44f4I33xwD7ubs2Zc5caJNw90eValk8TzFK6+c7/g3PH36bYTDU5w48VdG1tWKRO7izTcLnDjxSsv9ly8ngHu5dOk1TpyYN7p2NnuM5eV9nDjxZMv9b755K5FInBMnnu3xfrt/7i9flvf61772HBcvrg8EPP207Dt37jlOnLATJBgfv4NXXqlx4sRaZ9dSKcTS0sOUy2c5ceJ8h1v3p1ptFLiHz3zmNf7aX5tncTFGKnU/IyMnOXGidQO3rX6XtlIiAR//+EE++9mDzMwoZme/1WgB8v0kk6+pk2hor6lSauD/gDeAvf7/9wJvdDj2UeCLQe/7zjvvVIPQN77xjS3d7vd+r6bUE6jlb/7z7gef+QOlnkC9/5GTW1pro77yFaU++vB/UeoJlMqcaX/ghf+u1BOo2w8/rz71KSNLqz//c6VAqdnPf1ypP9nV8pjvfen/UeoJ1Gd/51k5dtbM2t/+tqz9Z3+mlPqrn1Pqv82sP+DJDyv1+euVUkq9851Kve99ZtZVSqmlJVn73//7piuf/z+VevJ/U6pWblz11FNy3Fe+Ym7tb3zjG2piQqlPfKLzcR/8oFK33WZuXa2HH1bqkUfa73/+eXnOn/uc+bV/5VfkvovF1vsfeUQeX68K8rnX77cvfnHzvt/7Pdl3+nTvawfVj/6oUrfcsv66l1+WdZ94wt66SilVrSo1OqrUL/yCXP7yl2Xdb36z/W22+l3aSYWCUisrxu/2qpGN1/T7XTZfU+BZ1YZphhXu/FPgo/7/Pwp8fkiPY+CKxUKUKiPUeygcqBkKd8bjkMr77lmlRcKMlh/uNN3MFqBY9wsHWuTE6Zy0TMlsuFPneTUGnW9saJs9C+NHAeyHOwHu+Ffw0Gdl6LkvG4UD+v6CNJS9FsOd0H79ZNJeuLNThaXtcKdef+PaZ87I9tgxe+uC5CLecQc895xc1rMsB93YNR4ffFWnk5MNDQvS/iXwg57nnQJ+0L+M53l3eZ73u/ogz/OeBP4Y+AHP8y55nveeoTxag4rFoFBOoKpBWnDImb0eMnPmjsWaIa1D2Z2/L1M0X91ZrG2XfLgWfeKidQHHZH7Hutv0Kw0++TySkwbr89Jya5BmunAgFpM8oW4VljZy0kDgK0h15zAhzUZ1Z7fRUKmUnfYbsNa0tRWkLSxAJGIHTLX27ZN8uELTR+z0adnahjSQvLDvfleKB15+WXLkbDXQdXK61jUUSFNKLSulfkApdYO/XfGvf1Yp9XebjnuXUmqnUiqhlDqglPrqMB6vScXjUKzEqQcZsO47aSpsrnAgXfDPDuUOTlpVnDTTEwdgrXKzVfHASG0FwglS/mM0BYjrCwc2NLStZMVZGzsCmHfSPE/WDwppJgERBL7eqoUDuoeaTSetXYVnMmkP0qJRGXTeCtIuXYL9++1UlWq1amh7+rTA8CBg6c475cfO668PtmjAyelalJs4MGA1nLRKsOrOaj1MKBLtfmzAtYOFO9MoL0KxEjcGaRq4cpUOkFZfhvgeCgWPeNxcyb4Gn/VOmt+GI3dOtmNrTppJSINgkDbMcKdNSEunpWdVK9kMd3aqsKzX7VZ3QuuQIwikHThgb11o3Svt9Glx0QbRBuOuu2T79NPSI81BmpPT1uUgbcCKxaBQSQQbsF7NU6yMEo+b+WaNx5uctI7hzgy10ATgGQ935sq+fdGioe1IbQUSeykWzYU6YWNOmm5o60Nadq39BmB84gAM30kbZrhTqfYNbW2GOzvlpCX9lEibrtIwIa1VTtyZM4MJdQIcPy7v+b/39+Tz9PDDg1nXyelalIO0ASsWg2I5Hnh2Z6EyatTNShUCOGnVDDVPzpymw53pkp8xXV7edMxIfdkKpIXDfo+4HBAZldDm8jOys6lHWqUieTTDcNJs5qQN00mD9iHPdHotHGxanZw03ZLBZgf8VpCm1GAhTY9jqtXg7NnBQVo4DB/5CDz2GHzlK/CBDwxmXSena1HW+qQ5tVY8DqlKAq8eLNxZKJuFtFIlTk2NEO4S7qx6ZvPC9HNYLeyFSaCw2WaI1dYgzQYo6ZAi+/46nP20uJmpVyE8CrGd5H1nZxhOWj4vJ7eRkcGuXalI538bkNYteV/P7bQRgusEiIOAtP37ZZ1KRXLUQCo7i0X7kDY9LSFPXWF5+bLMDL3uOrvrNuu3f3twazk5XctyTtqApXPSvHqAcGctT740agyU9P2U6pNdw50VZcdJWynsAS8M+cvrD6gWiKgcJPZSKJh10mADrOx/v1TOXvkynP8jOPAj4HmNajgbgNjNzcrlBA5NA8v4eOch5/o1GYaTtrxsrxVFPC7/humkKcW6Rqra2Tp40N66IO+hBx+UnDAYbGWnk5OTWTlIG7BiManuDKlgTlquZM5JW+tVNtW1urPsQ5opYIlG5eRRKIYhvgcKGyCtOOc/yD3Gw50gANRw0nY9CuEEPPcLUEnC9T8HrO0fVuGAjbDftm2SJN9uVKsGuGFBms28sO3bh+ektcoL05Bm20kDGYd07pysP6geaU5OTublIG3A0k5aIEir5ckVzUFaJCKgVKx1c9LSlGoS7jQFLJ7ntx8pIsn7G520gt8vYBBOWiQBex6XNhyTNzXmZ9p00oLkpNmCtGq1CVA3SEOMjXYU3dpgLC/DzIz5dZvXb+ekhcP2G8rC8CDtwQdl+/TT4qRFIvYdPCcnJ/NykDZgxeMCaWHVPdypqnmyBiHN83R16VTXiQPFmlknDZogLbF/s5PWBGk2XKXR0Q2gtP/9sr3h5xoxRluhvyCQlk7bqXLUbSY6dd4Hu5A2LCdt926Ym9t8/fy89DEbRK+yjZAWDq81u7Wp22+Xz9uTT8Kf/znccIOAmpOT09Ul97EdsHS4M0x3J01V8+TLo8QMjjeJxSBXmYLK2fYHVTMUqnYgrVBAnLT5r6/fqSEtLpC2a5e5dUFAaZ2rcvgnoLgAx36mcZXOGxsGpGUy9scj7d+/eb9NSNNFAe0gbWnJLqTt3w9PPbX5+vl5u6FOgJ07Bcg2QtrevXK9bY2MwD33wO/8jhQNPPGE/TWdnJzMyzlpA9bIiDhpES8ApFWkcMBk6C8Wg1y5Q7izXoVKmmxZYkEm104kNKQdkPUrTdn0xTkUIYjNNJLoTWqTkxYdh1t/GSJrlp0tSNO9ytrlhcFapaNpafhKtTFONUDZmHMYCslzagVp5bKA6SB6lW183efm7EOadsw2QtogQp1aDzwgr/Pjj8Pf+luDW9fJycmcHKQNWKEQlGsJwl7A6k6DLThAoCtX7hDu9CcBZHxIMz1sPJ9Hwp2wPuRZmKUc2g6hsPH5mevW7iBbvcrGxgQUih3+5LbCnUEGjTcfZ2P9VmvrQeO2nbRyWcKqzRqEkwabe6UNGtI++EEpFvit3xrMpAEnJyfzcpA2BFVVnGioBKrNvBxfXs2Ok5YpTomT1craKckZLV2cxvPM9u1quFmNrv8bIC0sYGgL0oJ03gc74U7ovL5tJ60bpNkakdQO0jQ42Swc0OHdy01vM90WY9CQphRcvDhYSLv3XnjzTclHc3JyujrlIG0IqtR9e6rTaCilBNLK5vqkgYa0SVC1xgD3dSqLxZEs7CCRMPsLvNEGo5WTVpylHBJbxVbhQDcnbZiQZisnrVvhwOqqPF9bSeXdIM12uBPWu1mplLhrg4C0AwekDUatJhCeyw0W0pycnK5+OUgbgqoqAKTVK3jUrDhpjdFQrXql+ZC2mps23oqiAUoNJ+3S2s7CHKXwDqpVOYnactI65YVpSLMR7oT2kFapSK7eMCAtmbQX6oThQlorJ20QPdK0HnpI4Pu559YayjpIc3Jy6kWuunMIqqEhrUPxgO9y2chJS+Wbh6zvW3+AH+5czu6wB2mRMYhuWwt31mtQWqA8Nt1wu2wUDui8sHbPK5cTiNVjfExJQ1q7qQO6oayNnDTdeb9T4cAwIG1pSbY2IW3vXtkOC9Ief1yc6K9+VUA8FIJHHrG/rpOT07UjB2lDUA2fujpBWtWHNAtOWjLXYci676QtZ8w7aeuS90ebeqUVZ0HVKYftQZoGpXy+PaTZGjTezUlL+4W2Npw0aA9KINfbqOzstvYgnLSREWnl0hzuHCSkzczAnXcKpC0tCaANokeak5PTtSMX7hyCal6AcKclJy0Wg9VOkFZaBi/EcnrK7mimRNPUgeVnAMhGb7DqpEHnvLBs1k7X/26Qpp20YUGabSctnZa8rGYtL4vDZ/rvvFH79g3PSQN4z3ukV9sbb8CP//hg1nRycrp25CBtCKp7AcKdTU6a6cKBZLY53LlB5RUY2U6+ELIS7myASrOTtvAkhONkoscbkGYrL6xT8cC16qRNTQ0X0mBzuFVPG7DdGmL//s1OWihkt6q0We95j2zDYfjQhwazppOT07UjB2nDUChAuNNiTtpSupOTtgIjOzrmbm1Vo6OSIF+vA2NHZKh6cQkW/xJ23IvyotbDncpONsgAACAASURBVN2cNBuQpu+zXU6ahjQbOWnQ2UlbXbULaTqUunGGpu2RUFr792920mZmBtP1H+C++wS+3/1umULg5OTk1IscpA1B9VCAcGfVXrhzJe1bNi2rO5dhZJpCwQ6kgd/U9eCPSp+40/8RVr8LOx8CGGq4M5ezA2m6wrJd8v4gctJarV2vy/U2IU2HFTfO0BwUpO3bBwsLUjEMg+uRphWNwpe+JOOZnJycnHqVg7QhSIV6qO60UDiwnPYtm1bhztIKxOxA2rqQ47a3w/Td8PKvSM82H9I0RNksHGgnW06anmHZDtKGlZOWyUjFq83CAd1y4tKl9dfbntuppdtwaEj83vfg+HH76zbrwQfhuusGu6aTk9O1IQdpQ5AX9qmrGiAnzUIz20IxDJGJNtWdyzCyw6qT1gClYz/jg6oHM/ev23ctFQ6EQhLKbBdyHFZ1p+2RUNAe0gYZ7gQJec7NSXPZ+++3v66Tk5OTCTlIG4K8qE8/9QDVnYadtHjcDzdGJ9vnpFly0jaB0uG/CeEEbL8NRiQmeC0WDkD7kCOsQZqttaemoFTaPDt0EJA2NSWvfXNeWL0uszsHkbyvpw5cvgzf/rb830Gak5PT1SLXJ20YCvdQ3WkhJ61UAhWdwtsY7qxXoJppOGk2WnBAEyiNTMHdvwOx6cYx12LhAHRO3k+nZd2QpZ9MzfM7m/t0DQLSPE/crGYnLZUSUBuEk3b99fJj4+tfF6cyGoV3vtP+uk5OTk4m5CBtCApFg4Q7hSZK1VGjcxVjMclDUpFJvI1OWmnFP8iuk7bOzbrub687xna4s52TppS9wgHo3AbD1txOreY2GM2QpisubUIaSMizGdIG0chWa2wMfuzH4A//EG68Ee64w/yPDycnJydbcuHOISjUQ7iz0VPNkHR+Wz26A0pL63f60waUpRYcQUKO2umyHmrdoEJBQG1Y4U5b7Tf02rAZEgfhpMFwIQ3gYx+T1/6ZZ6QlhpOTk9PVIgdpQ1A0FqVWD3V20ioZSrVRRmJmGzpp+KlE9kFhdv1Of25nxZted6wpdXOz9L6REYy6hyBhrmi0PaTZGq6u1S3cOQgnrR2k2azuBIG0K1fWpg5cvChbPVvTth57DA4elP+7fDQnJ6erSQ7ShqBYzCNXGqNe6ZAgVc1QrE5Yywsrh/ZBcUHy0LR8J62ohgtptkBp3ezQDdKQNoxwp21I033aWkGa59ldGwTSarW1kUyvvy7bG2+0u65WKCRumuc5SHNycrq65CBtCIrFIFscp15q04IeoJKmYAHSNHjlvX2AguL82k4f0gq1HeuONaUgbTDyeXvzHNeNpdog25CmZ1jW65v3DSonrRWkTU7aK1jQ2tiG47XX4NAhezDeSv/sn8kMzcOHB7emk5OTU79ykDYENSCt3AnSMuQrE0Z7pEETKNX93gT5psGGfrgzXx2uk2YL0jo5aRrebEJavd56NNSgctI25sTZHgmlpSFNt+F4/XW46Sb76zYrHncumpOT09UnB2lDUDzuQ1qlA6RVM+TL9sKdmaoPaYUmSCuvgBcmVxZbZ1iFAzYhbVhOWqfRULbDnYmE5OO1ctIGAWm6oeylSwKqr78Ob3ub/XWdnJycrnY5SBuCYjHIlsahE6RVMmRL9iAtVW4BaSV/bmfRA8y3KohGZbD1sJy0IOFOm4UDsBmUlLIPaZ4n628ccj4oSJuZkWKQS5fkXz7vIM3JyckpiBykDUE63Km6QVrRHqQlC7vAC6+HtOIcxHdR8ItOTTtpnifrfz8WDrSDtGJRkuptJ+/v3r15yPni4mC6/odCaw1tddHAoMOdTk5OTlejHKQNQRrSvFrncGemaC8nrVAMQWLvekjLnIKJ6xvjg0xDml7/+7FwoF24U4+EspmTBtKC4sKFtctKyeVDh+yuq6V7pb32mlx2TpqTk5NTdzlIG4LiccgUJwjVMu0PqmRIF+w5afk8kNi3BmmqDpnTMHGDNSdNrz+scOfEhFRSttIgCgdgs5Nme7i61qFDa/3JQGZn5nKDg7Tjx+G55+CrX5W+bLt2DWZdJycnp6tZDtKGIO2khdo5afUa1PKk8wOAtLxfcpe/CPUSTBy3CmmdQo5gt3CgU9d/7aTZWrubkzYISFtcpPG31a7aoCDtl39Zwp5f/rK4aJ43mHWdnJycrmY5SBuCGpCmshJ32qiqEEMqN0AnLX1Stm8BJ81m8r4e7r1R2aysa6tnWLuGstrZGwSkwZqbpiFtUH3DjhyBf/fv5P8u1Onk5OQUTG7A+hCkqztDVKFehvCGxLOqnLlXs5PEDI/O0dDXgLTyCtSKko8GbwlIs+lm6V5lG6FIQ5otxWLyerYLd9rOSdOQduGChB4H7aQB/PRPw8ICPP744NZ0cnJyuprlIG0I0n3SAHHNNkJaRUPaBJOGnTTPE1hoQBrIDM/MKQiPQmJfA9JMu3ggADY/33pfrQalkt1wJ6x12m9WLmcvH01rampzuHNFhjxYn5/ZDGkA58/L+2AQ1Z1angef/OTg1nNycnK62uXCnUOQDncCjdDmOvmQtpI2H+6EJjcr0dQrza/sxPOGlpNWLocbj8+G2nXeB3HSbENaqyHrui3G7t12196/XyBJQ5qu7HS5YU5OTk5vXTlIG4LWQVqrXml+uHMlaxnSRpsh7SRMHJeLBcnNikYtrt1CxWKocYwNtcsLg+FB2vy8hDptz7GMRmHv3vU5aYMMdTo5OTk59S4HaUNQPO5PHIAGkK2T76RlCub7pIFAUKHAmpO2/B3InoWJGwBpsJpI2HFZOkOaOGmD7voPg4G0VuHOuTn7LprWoUPrw50O0pycnJze2nKQNgTFYgJgQJtwp2STZyxMHIAmUIrtgIMfgtd+DVS1AWmFgp1Q57q1W8i2k9Yt3GnbzWoX7tyzx+66WhrSSiVZd1CVnU5OTk5OW5ODtCGoMbsTOoY7Mxaa2cIGULr3/4Px6+X/A4S0Vp1HSiW7OWlvhXDnRkCcnx+8k6ZDns5Jc3Jycnpry0HaEBS0cMC6kwYwMgUP/w+47mMwfSdgF9LGxgTQ9OipZg0zJ21lxX6F5dTUcJ20gwfldX/uObnsIM3JycnprS0HaUNQOAzFagdIq2ZQhCiUE/YhDWDbLXDff4GIkFmhYKf9hl4bWoc8bTtpulfZRjerUpF+ZTt22FlXa9s2CTVqQC2VYHV1sOFOgP/xP2Trwp1OTk5Ob205SBuSal5nJ60emgA8K4UDjT5pbWQ73Amt17ddOACt3Szdq8w2pOmeZAsL67eDCncel+Jd/ut/FWDdv38w6zo5OTk5bU2ume2QpMI+rbTJSat6UlgwECdtg4YHaXbDndA6eX95Wba2Ie3IEdmePSuulu6RNign7eab4fnnBQ737MHKDwAnJycnJ3NykDYkJRIhitUx4m1acNiGNN2wtpWKRdi50/y6em3o7KTZhrR2Xf9tQ9rRo7I9exYeeWRt8sKgIA3gjjsGt5aTk5OTU39y4c4hKZHw89LahDsryNyia81J06HMXG7zvnxeIM3msPFW4c5BOWm6w//Zs3J5UNMGnJycnJyuTjlIG5JGRyFfmWgb7qwocdJsNbMtFmXYeCsNK9yZzUaIROytDZ3DndPT9tYFGBmBAwccpDk5OTk5BZODtCFpdBRypfZOWqluN9wJ7UOeg3DSMi2ivNlshG3b7M6THGZOGkjIU0Pa/Ly0/XC5YU5OTk5OreQgbUhKJCBXbgNp1Qylmn1IaxfytAlpnbr+53KRRi8zW9I5ac3NdJeXZbal7Wa2sB7SBjkSysnJycnp6pODtCFpdNRvaNvGSSsOEdLyefujmVo1lB0EpE1NQbm8vpnu8rK4aDYdPK2jR+HyZVl/kI1snZycnJyuPjlIG5JGRyFTaO+kFap2c9KgNaSVy/JvYsL8uiD363ntRjNFGhBnS60gUUPaIKQrPM+fH+xIKCcnJyenq08O0oakRALS+fHGCKiGaiWoV8iX7TlpOpTZCtJ0rpit0F8o1LrCEiCXCw8k3Anrw63DgLSzZ52T5uTk5OTUWQ7ShqTRUUjlWzhpPrRpSLPppLUqHNCQZstJg9a9ymAwTlqr+Z3DgLQvfEFe64MHB7Ouk5OTk9PVJwdpQ9LoKCQzE5shrZoGZLh6NCoJ7TbWhnZtMGRrG9KGlZPWKty5smK//YbWvn3SiuO3fkvW/NjHBrOuk5OTk9PVJwdpQ1IiAcncONQrUCuv7fCdtHRhwlryfidIG5STthHSajXI5wcHadrJU2qwTlootDbY/FOfGty6Tk5OTk5Xn9xYqCFpdBSWS01D1sO+lVNaBGApu9PaoPEgkGazHcW2bXDmzPrr0um1fTa1MdyZy0mhxCBh6a67ZL2/+3cHt6aTk5OT09UnB2lDUiLht+AAgbSYD2nFBQDmk7uHAmnDCndqZ2vQ4c5BNrLV+sxnxDkMhwe3ppOTk5PT1ScHaUNSo08arK/wLMrU7dnVXd9X4c5BQdroKEQisLoql4cBaeGwAzQnJycnp+4aSk6a53nTnud9zfO8U/52e4tjbvc871ue573ied73PM/78WE8VltaB2nVZkhbgFCUxdS2azbcOTUl4c1abe06DW22w52eJzlhOtw6DEhzcnJycnIKomEVDvxT4OtKqRuAr/uXNyoP/G2l1C3ADwG/7nme5VP44JRIwEJ6l1zwQ5zy/3mI7SKX86xBWiwmsDJMJw3W8tBgcE4awI03wsmT8n8HaU5OTk5Ob1UNC9I+AHza//+ngQ9uPEApdVIpdcr//xVgAdg5sEdoWaOjMJvcKxcKs2s7igsQ300uZ280k+cJJLbqk5bNSijORhNdrVZtMPT/BwFpx48LpNXra5A2qBYcTk5OTk5OQTUsSNutlJoF8Le7Oh3sed49wAhwegCPbSAaHYX51G4UHhSurO0ozkN8F/k81pw0vX47J02PbrKlVpCmnTTb4U4QJ61QkBmaKytynYM0JycnJ6e3mqwVDnie9z+BVkNvfqnH+9kLfAb4qFKq3uaYjwMfB9i9ezcnTpzo7cFuQdlstq91Tp4cp1a/i1x1O+kzz3FyRe7rvtRFkiM7WF0tkUotc+LESTMPeIPC4fs4c2aVEyfeWHf9qVM3Eo1u58SJb1tZF+DcuW3A7Zw48QKplJDaCy8cBo7ywgvfJBJR1tYGKBRk/c9+9kWefXaGsbHdPP30X1pdcxjq9z3qtFnuNTUv95qal3tNzWtYr6k1SFNKPd5un+d5857n7VVKzfoQttDmuEngz4BfVkq1pQal1H8E/iPAXXfdpR599NG+HnsQnThxgn7W0TMbK5GD7Nvmse/RR6Wz6h8l2XPkHVQqMa6/fh+PPrrPyOPdqO3bYXJyL48+unfd9b/5mzAzQ1/PrZu0W3bkyO3oZb74RYjFajz++CPW1tW64Qb4xV+EePw2zpyB+++3+3yHpX7fo06b5V5T83KvqXm519S8hvWaDivc+afAR/3/fxT4/MYDPM8bAT4H/L5S6o8H+NgGIp1vlq3tg6Kfk1bNQL2Eiu0eerjTptqFO8fHq3YX9rVvn7y23/wmvPwyPN7254STk5OTk9PwNCxI+5fAD3qedwr4Qf8ynufd5Xne7/rHfBh4GPiY53n/f3v3H2RXeddx/P3NTzZEkmwSYig/tWkLVEwhWLQOJaVFoDrUSqflD6UKQzvSGR2dcahlFGf8ox1HO1Nr0TpWomgpYtFO6VgQm+nYWkpokF+RH7a0RNL8aH6wSWAhydc/nnOTm8vdQJZ7zzm7eb9mds69557d58l3zm4+8zznnOfB6mtlM90dvJGRsh3bt/zQNWnPl2ek7Zt1Ivv3H1shbedOOP74ekJaRLl54M47y/t3vauWZiVJOiqNPMw2M38EXNxn/zrg2ur1rcCtNXetNp2RtF3jy8vNAgf2w3iZ9X2BZYcdMwzz5x+6s7Hb2BgsHfI9tCecUIJSUyNpUG4eWL++PHpj5bSJ/pKk6cQF1hvSGUnb8cJyyANlzc5qtYG9B8rNrsMcSev31H8oj+AY9kjajBklqPWGtOOP3z/xNw3YG95QthdfXPojSVLb+N9TQ2bMKA+V3banujHg+U0HH2o7tq+MpA0zpC1adGhppG51THfCy0NindOdUEbSwKlOSVJ7GdIaNG8ebNvTeaDtswdH0sZeXHLw82HphKTsedrF2Nhwl4TqWLCg2enOSy6Bq6+G9763tiYlSToqLrDeoJER+OFzXasOvLAF5i5mz97ZwPBH0vbt47C7SF96CcbHmxlJK9Od9YW0JUvglltqa06SpKPmSFqD5s2DH+6sHpj2/KaudTvLrmFfkwaHT3nu3l22dYW0zioD4+Pwwgv1jqRJktR2hrQGzZsHY3vmwpzRarqzrNvZeTTGMKc7Fy0q2+7RrDoWV+/oHknrhLU6bxyQJKntDGkNGhmpnlU2chLs/QHseRqOa24krRPS6rgmrTukPf102S5dOj78hiVJmiIMaQ06+EDZkeXw7Fdg7zNw6pW1hrTukbQ6pzsXLy4jaM8/D489Vvadfvqe4TcsSdIUYUhr0Lx5JaQwUt08cNZH4dT31Trd2W8krY6QdvbZZfvIIyWkzZkDy5e/MPyGJUmaIry7s0EHpzt/4jfg+NPgp24CaGwkrc6Q9pa3lO369bBhQ3lu2cyZeeRvkiTpGGJIa9DB6c5lby9flT17YPbs8jUsCxaUbVPXpJ1xRunD+vVlJO3884ffpiRJU4nTnQ0aGammO3vs3TvcqU6AWbPKiFlT16RFlDUzv/lN+N734Kyzht+mJElTiSGtQQdH0nrs2TPcqc6O3qWh6pzuhDLl+dBDZdUDQ5okSYczpDWoE9J6l2aqK6T1PvV/bKysKdpZ/H3YOtelAZx5Zj1tSpI0VRjSGjQyAgcOlOWYutUx3QklpPWuODB/fpmKrEMnpM2cCStW1NOmJElThSGtQZ0g1jvlWed0Z+9IWl1TnQBvehPMnVsC2pw59bUrSdJU4N2dDeoOaZ1HYkAJaXUtzdQ9krZ9++H9GLbZs2H1ajj11PralCRpqjCkNahz7VfvHZ5798KyZcNvv3ck7Zln4OSTh99ut7vuqm96VZKkqcTpzgY1Pd25cGGZ4ty3r7zfuBFOOWX47XabMcOQJklSP4a0BnVC2p6eJSvrvCYNyhqa4+OweXP9IU2SJPXndGeDTjihbJ977vD9dd7dCWXKc9eu8tqQJklSOxjSGtRvkfPM+kfSduw4NOVa9zVpkiSpP0Nag0ZHy3b79kP7XnoJ9u+v75o0KCNpmzeX146kSZLUDl6T1qB+I2md69PqnO7csaPc2QmOpEmS1BaGtAYdd1z56hfS6pzu3Lmz3Nm5cGFZcUCSJDXPkNaw0dHDpzs714bVEdJGR8vjLzZuLCNpTnVKktQeXpPWsEWLDh9JGxsr2zpC2rx5sGoV3H13eQSHIU2SpPZwJK1hvSNpW7eW7dKl9bR/+eVw333wxBNejyZJUpsY0hrWO5JWd0h797sPPfbDkTRJktrDkNaw0dFmQ9p55x1qy5AmSVJ7GNIatmjRy6c7Z8+GBQvqaX/GDLjssvLa6U5JktrDkNawRYvKVONLL5X3W7fCkiX1Ljr+/vfD3Llw5pn1tSlJko7MkNawzqoDnSnPrVvrm+rsuPzyMpp30kn1titJkiZmSGtY54GynSnPJkIa1LPCgSRJevUMaQ1rw0iaJElqH0Naw9oykiZJktrFkNaw7kXWX3wRdu0ypEmSJENa47qnO7dtK68NaZIkyZDWsIULy3b79vofZCtJktrLkNawWbPghBPKSJohTZIkdRjSWqCzfqchTZIkdRjSWqCzNJQhTZIkdRjSWqCzyPrWrWUtzc7NBJIk6dhlSGuBzkjali2weHEJapIk6dhmHGiB0VHYtAm+/32nOiVJUmFIa4GrrioPsf3qVw1pkiSpMKS1wOrVcNNN5fWJJzbaFUmS1BKzmu6AihtvLCsOXHhh0z2RJEltYEhriRkz4FOfaroXkiSpLZzulCRJaiFDmiRJUgsZ0iRJklrIkCZJktRChjRJkqQWMqRJkiS1kCFNkiSphQxpkiRJLWRIkyRJaiFDmiRJUgsZ0iRJklrIkCZJktRCjYS0iBiNiHsi4slqu6jPMadFxAMR8WBEPBoRH26ir5IkSU1oaiTtBuDezFwB3Fu977UJ+LnMXAm8FbghIk6qsY+SJEmNaSqkXQGsqV6vAd7Te0BmvpiZ49XbuTg1K0mSjiFNBZ9lmbkJoNqe2O+giDglIh4CngE+kZnP1thHSZKkxkRmDucHR/w78ON9PvoYsCYzF3YduyMzX3ZdWtfnJwH/AvxSZm7u8/l1wHUAy5YtO++22257rd1/Rbt372b+/PlDb+dYYk0Hy3oOnjUdPGs6eNZ08IZZ09WrVz+Qmav6fTa0kHYkEfE4cFFmboqI5cDazHzjK3zP3wJ3ZeYdRzpu1apVuW7dugH2tr+1a9dy0UUXDb2dY4k1HSzrOXjWdPCs6eBZ08EbZk0jonUh7U+AH2XmxyPiBmA0M3+v55iTq2Oer+7+vA/4lcx8+BV+9lbg+8Pqe5clwLYa2jmWWNPBsp6DZ00Hz5oOnjUdvGHW9LTMXNrvg6ZC2mLgduBU4AfA+zJze0SsAj6cmddGxLuAPwUSCODTmfnZ2js7gYhYN1Hy1eRY08GynoNnTQfPmg6eNR28pmo6q+4GATLzR8DFffavA66tXt8DnFNz1yRJklrBx1pIkiS1kCFt8loz9TqNWNPBsp6DZ00Hz5oOnjUdvEZq2sg1aZIkSToyR9IkSZJayJB2lCLi0oh4PCKeqh4fokmIiKcj4uGIeDAi1lX7RiPinoh4stpO+IBjQUR8LiK2RMQjXfv61jCKT1Xn7UMRcW5zPW+vCWp6U0T8X3WuPhgRl3d99tGqpo9HxC800+v2qlaN+VpEbIiIRyPit6r9nqeTdISaep5OUkQcFxHfjoj/rmr6R9X+MyLivuo8/UJEzKn2z63eP1V9fvqw+mZIOwoRMRP4C+Ay4Czgqog4q9leTWmrM3Nl123NNwD3ZuYK4N7qvSZ2C3Bpz76JangZsKL6ug64uaY+TjW38PKaAnyyOldXZuZXAKrf/Q8AZ1ff85nqb4QO2Qf8bmaeCVwAXF/VzfN08iaqKXieTtY48I7M/GlgJXBpRFwAfIJS0xXADuCa6vhrgB2Z+Xrgk9VxQ2FIOzo/AzyVmd/NzBeB2yiLxWswrgDWVK/XAO9psC+tl5lfB7b37J6ohlcAf5fFt4CF1Wof6jJBTSdyBXBbZo5n5veApyh/I1TJzE2Z+Z3q9RiwAXgdnqeTdoSaTsTz9BVU59vu6u3s6iuBdwCdVY56z9PO+XsHcHFExDD6Zkg7Oq+jLPbesZEj/3JoYgncHREPVGuvAizLzE1Q/hABJzbWu6lrohp67r42H6mm3z7XNQ1vTY9CNSX0FsrqMZ6nA9BTU/A8nbSImBkRDwJbgHuA/wV2Zua+6pDuuh2safX5LmDxMPplSDs6/ZKyt8dOztsy81zK9Mb1EXFh0x2a5jx3J+9m4Ccp0yCbKCuhgDV91SJiPvDPwG9n5nNHOrTPPmvaR5+aep6+Bpm5PzNXAidTRhrP7HdYta2tpoa0o7MROKXr/cnAsw31ZUrLzGer7RbgTsovxebO1Ea13dJcD6esiWrouTtJmbm5+gN+APhrDk0VWdNXISJmU8LEP2TmF6vdnqevQb+aep4ORmbuBNZSrvdbGBGdlZm663awptXnC3j1l0kcFUPa0bkfWFHd8TGHcjHmlxru05QTEcdHxI91XgOXAI9Qanl1ddjVwL8208MpbaIafgn4teruuQuAXZ3pJh1ZzzVRv0w5V6HU9APVnV5nUC52/3bd/Wuz6jqdvwE2ZOafdX3keTpJE9XU83TyImJpRCysXo8A76Rc6/c14MrqsN7ztHP+Xgn8Rw7pobONrN05VWXmvoj4CPBVYCbwucx8tOFuTUXLgDur6yxnAf+Ymf8WEfcDt0fENcAPgPc12MfWi4jPAxcBSyJiI/CHwMfpX8OvAJdTLhreC/x67R2eAiao6UURsZIynfE08CGAzHw0Im4HHqPccXd9Zu5vot8t9jbgV4GHq+t9AH4fz9PXYqKaXuV5OmnLgTXVXa8zgNsz88sR8RhwW0T8MbCeEo6ptn8fEU9RRtA+MKyOueKAJElSCzndKUmS1EKGNEmSpBYypEmSJLWQIU2SJKmFDGmSJEktZEiTNO1FxMci4tFqyZwHI+KtQ2xrbUSsGtbPl3Ts8Dlpkqa1iPhZ4BeBczNzPCKWAHMa7pYkvSJH0iRNd8uBbZk5DpCZ2zLz2Yj4g4i4PyIeiYjPVk9y74yEfTIivh4RGyLi/Ij4YkQ8WT3Ukog4PSL+JyLWVKNzd0TEvN6GI+KSiPiviPhORPxTtd6iJL0qhjRJ093dwCkR8UREfCYi3l7t/3Rmnp+ZbwZGKKNtHS9m5oXAX1KWgrkeeDPwwYhYXB3zRuCzmXkO8Bzwm92NViN2NwLvzMxzgXXA7wznnyhpOjKkSZrWMnM3cB5wHbAV+EJEfBBYHRH3RcTDwDuAs7u+rbMm78PAo5m5qRqJ+y6HFqt+JjO/Ub2+Ffj5nqYvAM4CvlEt33M1cNpA/3GSpjWvSZM07VVrFa4F1lah7EPAOcCqzHwmIm4Cjuv6lvFqe6Drded95+9m75p6ve8DuCczr3rN/wBJxyRH0iRNaxHxxohY0bVrJfB49XpbdZ3YlZP40adWNyUAXAX8Z8/n3wLeFhGvr/oxLyLeMIl2JB2jHEmTNN3NB/48IhYC+4CnKFOfOynTmU8D90/i524Aro6IvwKeBG7u/jAzt1bTqp+PiLnV7huBJybRlqRjUGT2jtBLko4kIk4HvlzddCBJQ+F0pyRJUgs5kiZJktRCjqRJkiS1kCFNkiSphQxpenclAQAAAB5JREFUkiRJLWRIkyRJaiFDmiRJUgsZ0iRJklro/wG4SJi11lcJ+gAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "plt.figure(figsize=(10,8))\n",
    "plt.plot(filtered[:300], 'blue')\n",
    "plt.plot(outsig[:300],'orange')\n",
    "plt.legend(('IIR Filter impulse resp., (target)','RNN Output'))\n",
    "plt.xlabel('Sample')\n",
    "plt.ylabel('Value')\n",
    "plt.title(\"Impulse response from the IIR and the computed RNN\")\n",
    "plt.grid()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "The resulting plot below shows that the output from the RNN is somewhat smaller, because of the `tanh` function.\n",
    "\n",
    "This shows that an RNN can be indeed be setup to function like an IIR filter. This creates a connection to IIR filters, and hence RNN can be viewed as their generalization."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "hide_input": false,
    "scrolled": true,
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Training the RNN"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "hide_input": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/n56VbAU-uog?rel=0\" frameborder=\"0\" allow=\"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%html\n",
    "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/n56VbAU-uog?rel=0\" frameborder=\"0\" allow=\"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "Now we know that there is a solution for the weights that make the RNN behave similar to an IIR filter. In general we will not pre-compute the weights, but let the optimization figure it out on its own, given the impulse as training input desired impulse response as target signal.\n",
    "\n",
    "If the optimization is powerful enough it should be able to find this solution. The problem here is that for a system with feedback, as the RNN, the gradient of the loss function for the optimization is difficult to compute.\n",
    "\n",
    "Pytorch uses \"Autograd\" to compute the gradients of the loss function, see:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {
    "hide_input": true,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe width=\"900\" height=\"400\" src=\"https://pytorch.org/tutorials/beginner/blitz/autograd_tutorial.html\"></iframe>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%html\n",
    "<iframe width=\"900\" height=\"400\" src=\"https://pytorch.org/tutorials/beginner/blitz/autograd_tutorial.html\"></iframe>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {
    "hide_input": true,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe width=\"900\" height=\"400\" src=\"http://seba1511.net/tutorials/beginner/blitz/autograd_tutorial.html\"></iframe>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%html\n",
    "<iframe width=\"900\" height=\"400\" src=\"http://seba1511.net/tutorials/beginner/blitz/autograd_tutorial.html\"></iframe>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "scrolled": true,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "https://towardsdatascience.com/pytorch-autograd-understanding-the-heart-of-pytorchs-magic-2686cd94ec95"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "hide_input": false,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "The weights are of *type* `torch.tensor`, and the have the attribute `requires_grad=True.`\n",
    "\n",
    "Pytorch then tracks all operations with them to be able to quickly do the gradient calculation using back-propagation (which is basically just another name of the chain-rule of differentiation). This is done with the `.backward()` step in the optimization\n",
    "loop. The resulting gradient is then stored in the `.grad` attribute.\n",
    "\n",
    "When we have a feed back loop, as in recurrent neural networks, we apply the network over and over again to its output. This can be seen as a very deep neural network, where each loop iteration is another layer with the same coefficients. \n",
    "\n",
    "Applying *back-propagation* means that we go back through all those layers or iterations, using the chain rule for the computation of the gradient. But each computation introduces computation errors, which then accumulate. \n",
    "\n",
    "If our impulse response signal decays very slowly, then we have significant components far back in history, which makes the computation of the gradient very inaccurate. \n",
    "\n",
    "This can also lead to the problem of vanishing gradients, where very small values are rounded to zero, or exploding gradients, which leads to \"Not a Number\" (NaN) errors.\n",
    "\n",
    "Our example has an impulse response with significant values over several thousand samples, at Q=0.995, and it sill converges. \n",
    "\n",
    "But if we make it a little longer by increasing Q to Q=0.9995, then the optimization is no longer converging because of this problem.\n",
    "\n",
    "See also:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {
    "hide_input": true,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe width=\"900\" height=\"400\" src=\"http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-introduction-to-rnns/\"></iframe>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%html\n",
    "<iframe width=\"900\" height=\"400\" src=\"http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-introduction-to-rnns/\"></iframe>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "scrolled": true,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "Approaches to solve this problem are the \"Gated Recurrent Networks\" (GRU):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {
    "hide_input": true,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe width=\"900\" height=\"400\" src=\"https://pytorch.org/docs/master/generated/torch.nn.GRU.html?highlight=gru#torch.nn.GRU\"></iframe>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%html\n",
    "<iframe width=\"900\" height=\"400\" src=\"https://pytorch.org/docs/master/generated/torch.nn.GRU.html?highlight=gru#torch.nn.GRU\"></iframe>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "and the “Long Short Term Memory” network (LSTM), which have learn-able bypass connections (\"gates\"), which make the computation of the gradient more precise. \n",
    "\n",
    "But for problems where the simple RNN converges, it seems to converge faster, also because GRU and LSTM have many more weights to be optimized."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {
    "hide_input": true,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe width=\"900\" height=\"400\" src=\"https://pytorch.org/docs/master/generated/torch.nn.LSTM.html?highlight=lstm#torch.nn.LSTM\"></iframe>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%html\n",
    "<iframe width=\"900\" height=\"400\" src=\"https://pytorch.org/docs/master/generated/torch.nn.LSTM.html?highlight=lstm#torch.nn.LSTM\"></iframe>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "hide_input": true,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "To continue with our Python program, it re-initializes the RNN, with random starting values, prints the total number of parameters (weights and biases), and then starts the optimization with 500 epochs:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "target.type()= torch.FloatTensor\n",
      "target= tensor([[[ 1.0000e-01]],\n",
      "\n",
      "        [[ 1.8724e-01]],\n",
      "\n",
      "        [[ 2.5157e-01]],\n",
      "\n",
      "        ...,\n",
      "\n",
      "        [[-2.8209e-36]],\n",
      "\n",
      "        [[-1.4916e-36]],\n",
      "\n",
      "        [[ 0.0000e+00]]])\n"
     ]
    }
   ],
   "source": [
    "#input is the pulse, with the 0.1 in the beginning, target is the output of the IIR filter:\n",
    "target= signal2pytorch(filtered)\n",
    "print(\"target.type()=\", target.type())\n",
    "print(\"target=\", target)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([-1.5327,  0.9342,  0.5778])"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#random starting point as initialization:\n",
    "rnn.state_dict()['rnn.weight_hh_l0'].data.copy_(torch.randn(hiddensize,hiddensize))\n",
    "#rnn.state_dict()['rnn.weight_hh_l0'].data.copy_(torch.zeros(hiddensize,hiddensize))\n",
    "rnn.state_dict()['rnn.weight_ih_l0'].data.copy_(torch.randn((hiddensize,1)))\n",
    "#rnn.state_dict()['rnn.weight_ih_l0'].data.copy_(torch.zeros((hiddensize,1)))\n",
    "#rnn.state_dict()['fo.weight'][0,:].data.copy_(torch.tensor([ 1.0, 0.0 ,0.0]))\n",
    "#rnn.state_dict()['fo.weight'][0,:].data.copy_(torch.zeros(hiddensize))\n",
    "rnn.state_dict()['fo.weight'][0,:].data.copy_(torch.randn(hiddensize))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {
    "hide_input": false,
    "scrolled": false,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "weights = OrderedDict([('rnn.weight_ih_l0', tensor([[0.4665],\n",
      "        [0.5345],\n",
      "        [0.3283]])), ('rnn.weight_hh_l0', tensor([[ 0.0414,  0.4271, -0.4895],\n",
      "        [-0.0175, -0.0723,  0.4523],\n",
      "        [-0.4473, -0.3634, -0.4696]])), ('fo.weight', tensor([[-0.1503,  0.4366, -0.4715]]))])\n",
      "Total number of parameters: 15\n",
      "0 4.388274669647217\n",
      "10 4.387454032897949\n",
      "20 4.386641025543213\n",
      "30 4.385805130004883\n",
      "40 4.384890079498291\n",
      "50 4.383843421936035\n",
      "60 4.3826165199279785\n",
      "70 4.381145477294922\n",
      "80 4.379334449768066\n",
      "90 4.377028465270996\n",
      "100 4.373979568481445\n",
      "110 4.36981201171875\n",
      "120 4.363988399505615\n",
      "130 4.355762481689453\n",
      "140 4.344211101531982\n",
      "150 4.328616619110107\n",
      "160 4.309744834899902\n",
      "170 4.2918620109558105\n",
      "180 4.279848098754883\n",
      "190 4.268871307373047\n",
      "200 4.256827354431152\n",
      "210 4.2448225021362305\n",
      "220 4.232172012329102\n",
      "230 4.218789100646973\n",
      "240 4.204394340515137\n",
      "250 4.188652992248535\n",
      "260 4.170994758605957\n",
      "270 4.150516510009766\n",
      "280 4.12559700012207\n",
      "290 4.093055248260498\n",
      "300 4.04579496383667\n",
      "310 3.965214729309082\n",
      "320 3.7911860942840576\n",
      "330 3.203434467315674\n",
      "340 0.9520625472068787\n",
      "350 1.4174097776412964\n",
      "360 0.27797627449035645\n",
      "370 0.32112517952919006\n",
      "380 0.1425458788871765\n",
      "390 0.10613275319337845\n",
      "400 0.09997615963220596\n",
      "410 0.08651445806026459\n",
      "420 0.08397289365530014\n",
      "430 0.08123292773962021\n",
      "440 0.07949517667293549\n",
      "450 0.07773254066705704\n",
      "460 0.07616735994815826\n",
      "470 0.07464951276779175\n",
      "480 0.07320534437894821\n",
      "490 0.07180958241224289\n"
     ]
    }
   ],
   "source": [
    "rnn = RNNnet(infeatures, hiddensize, outputs).to(device)\n",
    "ww = rnn.state_dict() #read current weights\n",
    "print(\"weights =\", ww)\n",
    "print('Total number of parameters: %i' % (sum(p.numel() for p\n",
    "in rnn.parameters() if p.requires_grad)))\n",
    "loss_fn = nn.MSELoss(reduction='sum')\n",
    "#learning_rate = 1e-3\n",
    "optimizer = torch.optim.Adam(rnn.parameters())\n",
    "for epoch in range(500):\n",
    "    Ypred=rnn(inputsig)\n",
    "    loss=loss_fn(Ypred, target)\n",
    "    if epoch%10==0:\n",
    "        print(epoch, loss.item())\n",
    "    optimizer.zero_grad()\n",
    "    loss.backward()\n",
    "    optimizer.step()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "The loss usually starts at around 4.4, and ends at around 0.1, which looks successful. \n",
    "\n",
    "The program then plots the resulting impulse response from the RNN in comparison with the given audio target, which is the impulse response of the IIR filter:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [],
   "source": [
    "#the input, converted from the Numpy array:\n",
    "inputsig=signal2pytorch(ximp)\n",
    "#Run Recurrent Neural Network:\n",
    "outsig= rnn(inputsig)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {
    "hide_input": false,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The sound from the recurrent neural network\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "                <audio  controls=\"controls\" >\n",
       "                    <source src=\"data:audio/wav;base64,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3P/g/+j/8v///woAFQAeACIAIwAgABgADgACAPf/7P/k/9//3v/h/+j/8f/9/wcAEgAbACAAIQAfABgADwAEAPr/8P/n/+L/4P/i/+j/8P/7/wUADwAYAB0AHwAeABgAEAAGAP3/8v/q/+T/4v/j/+j/7//5/wIADAAVABsAHQAcABgAEQAIAP//9f/t/+f/5P/k/+j/7//3/wAACgASABgAGwAbABgAEQAJAAAA9//v/+n/5v/m/+n/7v/2////BwAPABYAGQAaABcAEgAKAAIA+v/y/+z/6P/n/+n/7v/1//7/BQANABMAFwAYABYAEgALAAMA/P/0/+7/6v/p/+r/7v/1//z/AwALABEAFQAXABYAEgAMAAQA/v/2//D/7P/q/+v/7v/0//v/AgAJAA8AEwAVABUAEQAMAAYA///4//L/7v/r/+z/7//0//r/AAAHAA0AEgAUABQAEQANAAcAAAD6//T/7//t/+3/7//z//n/AAAFAAsAEAASABMAEQANAAcAAQD7//b/8f/u/+7/8P/z//j//v8EAAoADgARABIAEAANAAgAAgD9//f/8//w/+//8P/z//j//f8CAAgADAAPABEAEAANAAgAAwD+//n/9P/x//D/8f/z//f//P8BAAYACwAOAA8ADwANAAkABAAAAPr/9v/z//H/8f/z//f//P8AAAUACgANAA4ADgAMAAkABQAAAPz/9//0//L/8v/0//f/+/8AAAQACAALAA0ADgAMAAkABQABAP3/+P/1//P/8//0//f/+////wMABwAKAAwADQAMAAkABgABAP7/+v/2//T/9P/0//f/+v/+/wIABgAJAAsADAALAAkABgACAP//+//4//X/9P/1//f/+v/+/wEABQAIAAoACwALAAkABgADAAAA/P/5//b/9f/1//f/+v/9/wAABAAHAAkACgAKAAkABgADAAAA/f/6//f/9v/2//f/+f/9/wAAAwAGAAgACgAKAAkABwAEAAAA/v/7//j/9//2//f/+f/8////AgAFAAcACQAJAAgABwAEAAEA///8//n/+P/3//j/+f/8////AQAEAAcACAAJAAgABwAEAAEA///8//r/+P/4//j/+f/8//7/AAADAAYABwAIAAgABwAEAAIAAAD9//v/+f/4//j/+f/7//7/AAADAAUABwAIAAcABgAFAAIAAAD+//v/+v/5//n/+v/7//7/AAACAAQABgAHAAcABgAFAAMAAAD+//z/+v/5//n/+v/7//3/AAABAAQABQAGAAcABgAFAAMAAAD///3/+//6//r/+v/7//3///8BAAMABQAGAAYABgAFAAMAAQAAAP3//P/6//r/+v/7//3///8AAAIABAAFAAYABgAFAAMAAQAAAP7//P/7//r/+//7//3///8AAAIAAwAFAAUABQAFAAMAAQAAAP///f/8//v/+//7//3//v8AAAEAAwAEAAUABQAEAAMAAgAAAP///f/8//v/+//8//3//v8AAAEAAgAEAAUABQAEAAMAAgAAAP///v/8//z/+//8//3//v8AAAAAAgADAAQABAAEAAMAAgAAAAAA/v/9//z//P/8//3//v///wAAAgADAAQABAAEAAMAAgABAAAA///9//z//P/8//3//v///wAAAQACAAMABAAEAAMAAgABAAAA///+//3//P/8//3//v///wAAAQACAAMABAAEAAMAAgABAAAA///+//3//f/9//3//v///wAAAAACAAMAAwADAAMAAgABAAAAAAD///7//f/9//3//v///wAAAAABAAIAAwADAAMAAgABAAAAAAD///7//f/9//3//v///wAAAAABAAIAAwADAAMAAgABAAAAAAD///7//v/9//3//v///wAAAAABAAIAAgADAAMAAgABAAEAAAD///7//v/9//3//v/+////AAAAAAEAAgACAAIAAgACAAEAAAAAAP///v/+//7//v/+////AAAAAAEAAgACAAIAAgACAAEAAAAAAP///v/+//7//v/+////AAAAAAEAAgACAAIAAgACAAEAAAAAAP/////+//7//v/+////AAAAAAEAAQACAAIAAgACAAEAAAAAAP/////+//7//v/+////AAAAAAAAAQACAAIAAgABAAEAAAAAAAAA//////7//v//////AAAAAAAAAQABAAIAAgABAAEAAAAAAAAA//////7//v//////AAAAAAAAAQABAAEAAgABAAEAAAAAAAAA/////////v//////AAAAAAAAAAABAAEAAQABAAEAAAAAAAAAAAD///////////////8AAAAAAAABAAEAAQABAAEAAQAAAAAAAAD///////////////8AAAAAAAABAAEAAQABAAEAAQAAAAAAAAD///////////////8AAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAP////////////8AAAAAAAAAAAEAAQABAAEAAQAAAAAAAAAAAP////////////8AAAAAAAAAAAEAAQABAAEAAQAAAAAAAAAAAP////////////8AAAAAAAAAAAAAAQABAAEAAQAAAAAAAAAAAAAA//////////8AAAAAAAAAAAAAAQABAAEAAQAAAAAAAAAAAAAA//////////8AAAAAAAAAAAAAAQABAAEAAQAAAAAAAAAAAAAAAAD///////8AAAAAAAAAAAAAAAABAAEAAQAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\" type=\"audio/wav\" />\n",
       "                    Your browser does not support the audio element.\n",
       "                </audio>\n",
       "              "
      ],
      "text/plain": [
       "<IPython.lib.display.Audio object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "outsig=outsig.detach()\n",
    "outsig=np.array(outsig) #turn into numpy array\n",
    "outsig=outsig[:,0,0]\n",
    "print(\"The sound from the recurrent neural network\")\n",
    "display(ipd.Audio(outsig, rate=Fs))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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7rnn8tRTTw07nIOENCGEEKKPYDBIc3Mz27ZtG/JzvvWtb3Hrrbf2ue/OO+9k+/btnHLKKZxyyikA/OEPf+Ckk05iwYIFfOxjH6O7uxswu+XcdNNNLFq0iCeeeKLgay9ZsoTrrruOk08+mTlz5vDGG29w4YUXMmPGDL7xjW8AsGnTJmbPns2ll15KU1MTF110UW9gmDJlCq2trQC8+eabeVfRf+KJJ5g/fz5HHXUUJ598MmDCy5e//GWOO+44mpqa+MlPfjLgeS0tLcyZM4cvfOELLFiwgC1bthR8v9dffz1z586lqampt2p52WWXcdVVV7F48WJmzpzJ008/PeTrD/Czn/2MCy64oPf1e3p6aG5u5pJLLgHgIx/5CMcccwzz5s3jvvvu631eOBzmhhtu4IQTTmDZsmU888wzzJ49m0WLFnHNNddw3nnnAWZrqMsvv5zjjjuOo48+mv/93/8lkUhwww038POf/5zm5mZ+/vOfo5RiyZIl+33++cjsTiGEECPii1+E5cuDuN32vWZzM9xxx/BeY8+ePaxbt643oPT30ksv0dzcDMDHPvYxvv71r+d93DXXXMNtt93G888/T319Pa2trXznO9/hueeeo6KigltuuYXbbruNG264ATBLNLz88suDnp/P5+PFF1/kRz/6ERdccAHLly+ntraW6dOnc9111wGwZs0aHnjgARYuXMjll1/OPffcU7ALt7+bbrqJZ599lvHjx9PR0QHAAw88QHV1NW+88QbxeJyFCxdyxhlnDJipuGbNGn76059yzz33FHy/V199Nb/+9a9ZvXo1SqneNsAEvRdeeIENGzZwyimnsH79egKBwJDO+5VXXuHiiy8G4Oabb+auu+5ixYoVvccffPBBamtr6enp4bjjjuOjH/0odXV1RCIR5s+fz0033UQsFmPGjBm8+OKLTJ06tff1AL773e9y6qmn8uCDD9LR0cHxxx/P6aefzk033cSbb77JXXfd1fvYY489lpdeeomPf/zjQzr3QqSSJoQQQmDCV1NTE2PGjOG8885jzJgxeR+X291ZKKDl8+qrr7Jy5UoWLlxIc3MzDz/8MJs27du28ROf+MSQXufDH/4wAEceeSTz5s1j7Nix+P1+pk2bxpYtWwCYOHEiCxcuBOBTn/rUkMJf1sKFC7nsssu4//77e7v//vCHP/DII4/Q3NzMCSec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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "plt.figure(figsize=(10,8))\n",
    "plt.plot(filtered[:300], 'blue')\n",
    "plt.plot(outsig[:300],'orange')\n",
    "plt.legend(('IIR Filter impulse resp., (target)','RNN Output'))\n",
    "plt.xlabel('Sample')\n",
    "plt.ylabel('Value')\n",
    "plt.title(\"Impulse response from the IIR and the computed RNN\")\n",
    "plt.grid()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "Observe that we now have an even better fit than with our pre-computed weights. This is because the training was able to partly compensate the effects of the non-linear activation function (the tanh).\n",
    "\n",
    "This approach can now be used to **generate sound**, and also to **detect sound**. For instance this RNN could be used to generate Xylophone or bell sounds.\n",
    "\n",
    "Each impulse at its input is like an attack for a certain note of the Xylophone or bell. Different targets in the training result in different sounds.\n",
    "\n",
    "Observe that this is now more generic than an IIR filter, and hence more sounds could be produced.\n",
    "\n",
    "Matched filter theory states that a filter is maximizing the Signal to Noise Ratio for a signal which is the time-reversed of its impulse response (see our slide set on convolutional neural networks). Since RNNs have long impulse responses, they can hence **detect long signals or sequences.**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {
    "hide_input": true,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/r3KF3-H61QQ?rel=0\" frameborder=\"0\" allow=\"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%html\n",
    "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/r3KF3-H61QQ?rel=0\" frameborder=\"0\" allow=\"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "celltoolbar": "Slideshow",
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.10"
  },
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "state": {},
    "version_major": 2,
    "version_minor": 0
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
